我使用提供的代码here作为模板来访问函数外部用户输入定义的多个类变量值(字符串),但最终结果(字符串变量lptmstr
)是总是空的;因此,我需要调试帮助。
Class lptm
public inputstr3
public grpString1
public inputstr4
public grpString2
End Class
Function lptmIn
Set lptmIn = New lptm
lptmIn.inputstr3 = InputBox("enter names")
lptmIn.grpString1 = Split(inputstr3, ",")
lptmIn.inputstr4 = InputBox("enter loss %")
lptmIn.grpString2 = Split(inputstr4, ",")
If UBound(lptmIn.grpString1) = UBound(lptmIn.grpString2) Then
Else
Call lptmIn
End If
End Function
ublptm = UBound(lptmIn.grpString1)
For i=0 To ublptm
lptmStr = lptmstr & lptmIn.grpString1(i) + lptmIn.grpString2(i)
Next
答案 0 :(得分:2)
在您的函数lptmIn
中,您在(未定义的)变量Split
和inputstr3
上调用inputstr4
而不是对象属性lptmIn.inputstr3
和{{1} }。改变这个:
lptmIn.inputstr4
进入这个:
lptmIn.inputstr3 = inputbox("enter names")
lptmIn.grpString1 = split(inputstr3, ",")
lptmIn.inputstr4 = inputbox("enter loss %")
lptmIn.grpString2 = split(inputstr4, ",")
另外,您需要将函数调用创建的对象分配给全局代码中的变量,否则您将在全局代码中每次出现lptmIn.inputstr3 = inputbox("enter names")
lptmIn.grpString1 = split(lptmIn.inputstr3, ",")
lptmIn.inputstr4 = inputbox("enter loss %")
lptmIn.grpString2 = split(lptmIn.inputstr4, ",")
时调用函数lptmIn
lptmIn
当两个数组中的元素数量不同时,您可能还希望避免递归调用该函数。改为使用循环。
修改后的代码:
Set obj = lptmIn
ublptm = UBound(obj.grpString1)
For i=0 To ublptm
lptmStr = lptmstr & obj.grpString1(i) + obj.grpString2(i)
Next
作为旁注,变量和函数名称 atrocious 。我强烈建议选择更多不言自明的名字。