0

アレイを設定しました

Dim managerList(1 To 50, 1 To 100) As String

私がやろうとしていることは、行の1番目、2番目、3番目の要素を設定することです

managerList(index,1) = tempManagerName
managerList(index,2) = tempIdeaNumber
managerList(index,3) = 1    

しかし、オブジェクト変数が設定されていないと言ってそれを行おうとするとエラーが発生します。インデックスを整数として維持し、値は単一のマネージャーに対応しますが、3番目の要素を手動で設定できないようです。1番目と2番目の要素が正しく設定されています。

反対に、要素を設定できるようにする次のコードがあります。

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番目の要素に設定して、行にあるアイデアの数をカウントします。

このようなカウントを維持するための最良の方法は何ですか?要素を手動で設定しようとすると、オブジェクト変数が設定されないというエラーが発生する理由はありますか?

4

1 に答える 1

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..100の「アイデア」を持つことができる1..50の「マネージャー」がいるようです。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)

これは開始するための単なる例であり、実際の問題を解決するためにこれを適応させる必要があります。

于 2010-05-12T07:18:40.800 に答える