2017-08-01 97 views
0

我想在函數中傳遞數組名稱,以便它應該根據所提到的數組名稱進行一些操作。但是我得到類型不匹配的錯誤。在UFT中傳遞函數的函數

Dim oFormPage() 
Function GEN_FormLabelCheck(oModuleName,oFormPage) 

     Select Case oModuleName 
      Case "AA" 
       lableList=split("Scenario|Name|Event,"|") 
      Case "BB" 
       lableList=split("ID|Issue|mandatory?,"|") 
      Case "CC" 
       lableList_01=split("Name","|") 
       lableList_02=split("Work|Category|Type","|") 
     End Select 
msgbox UBound(oFormPage) 

Call GEN_FormLabelCheck("CC",lableList_02) 

請指出我在哪裏犯錯?

回答

0

由於您正在嘗試msgbox數組的上邊界,您尚未設置,因此會出現類型不匹配錯誤。

因爲您沒有通過lableList_02進出函數,所以您的代碼在任何情況下都不會工作 - 它在函數本身範圍內是局部的。您需要在該函數內傳遞oFormPage,更新oFormPage並將其傳回。

類似這樣的東西可以工作,但是您需要傳入和傳出兩個數組,以便爲​​您的CC情況提供兩種選擇,或將其放到單個數組輸出中。

Dim oFormPage 
Call GEN_FormLabelCheck("CC", oFormPage) 
MsgBox UBound(oFormPage) 

Function GEN_FormLabelCheck(oModuleName,oFormPage) 

     Select Case oModuleName 
      Case "AA" 
       oFormPage=split("Scenario|Name|Event,"|") 
      Case "BB" 
       oFormPage=split("ID|Issue|mandatory?,"|") 
      Case "CC" 
       oFormPage=split("Work|Category|Type","|") 
     End Select 
End Function 

在這種情況下,您可以定義值,其中,你會以及將它們定義爲一個數組反正而不是使用split: oFormPage =陣列(「工作」,「類別」, 「Type」)

您應該考慮處理輸入與您的Select Case語句中的任何內容不匹配的情況,因此oFormPage不會以數組的形式出現,這會再次爲您提供類型不匹配錯誤。

讓我知道你是否需要任何進一步的解釋?