我正在尝试在函数中传递数组名称,以便它应该仅根据提到的数组名称执行某些操作。但是我因类型不匹配而收到错误。
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 :(得分: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 = Array(" Work"," Category"," Type")
您应该考虑处理输入与Select Case
语句中的任何内容不匹配的情况,因此oFormPage
不会作为数组从函数中出来,这将再次给你类型不匹配错误。
如果您需要进一步解释,请告诉我?