我有一个数组设置
Dim managerList(1 To 50, 1 To 100) As String
我要做的是设置行中的第一,第二和第三个元素
managerList(index,1) = tempManagerName
managerList(index,2) = tempIdeaNumber
managerList(index,3) = 1
但是当我尝试这样做时说得没有设置对象变量时会出错。我将索引维护为整数,并且该值对应于单个管理器,但我似乎无法手动设置第三个元素。第一个和第二个元素设置正确。
另一方面,我有以下代码可以设置元素,
For x=1 To 50
If StrConv(tempManagerName,3) = managerList(x,1) Then
found = x
For y=3 to 100
If managerList(x,y) = "" Then
managerList(x,y) = tempIdeaNumber
Exit for
End If
Next
Exit For
End If
Next
它通过数组(横向)旋转,试图找到一个空元素。理想情况下,我想将y变量所在元素的索引设置为行中的第3个元素,以计算行中有多少个想法。
保持这样的计数的最佳方法是什么?当我尝试手动设置元素时,知道为什么我得到一个Object变量没有设置错误吗?
答案 0 :(得分:1)
object variable not set
表示您尝试在未初始化的对象上调用方法或访问属性。我在你发布的代码片段中没有看到类似的内容,你确定这些行中会出现错误吗?
确定错误的好方法是在错误消息中包含模块和行号。在您的子程序周围添加这个以获得更详细的消息:
Sub Initialize
On Error Goto errorthrower
//
// your code goes here...
//
Exit sub
ErrorThrower:
Error Err, Str$(Err) & " " & Error & Chr(13) + "Module: " & Cstr( Getthreadinfo(1) ) & ", Line: " & Cstr( Erl )
End sub
(我最初在Ferdy Christants博客上找到了这个)
目前尚不清楚你要在这里解决什么问题,但看起来你有1..50“经理”可以拥有1..100“想法”?我会为管理员制作一个class
:
Class manager
Private managername As String
Private ideas(1 To 100) As String
Sub new(managername As String)
Me.managername=managername
End Sub
// whatever methods you need....
End Class
然后,我会用这些对象的列表跟踪它们:
Dim managerlist List As manager
Dim key As String
key = Strconv(tempmanagername,3)
if not iselement(managerlist(key)) then
set managerlist(key) = new manager(key)
end if
Dim currentmanager As manager
Set currentmanager = managerlist(key)
这只是一个让你入门的例子,你必须调整它来解决你的实际问题。