LotusScript - 在for循环中设置元素

时间:2010-05-06 14:20:28

标签: for-loop lotus-notes lotusscript

我有一个数组设置

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变量没有设置错误吗?

1 个答案:

答案 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)

这只是一个让你入门的例子,你必须调整它来解决你的实际问题。