VBA を使用して、スクリプトがループを実行するときに一意のエントリを自動的に追加および削除できるアクティブ リストとして Excel データから配列を作成する方法を理解しようとしています。
例:
Object# , Status , Group# , Time
1 , Associate , 1 , 1
1 , Associate , 1 , 1.1
1 , Associate , 2 , 2
1 , Associate , 3 , 3
1 , Disassociate , 2 , 4
Object
配列は、Status
、の一意の組み合わせを設定しますが、オブジェクトGroup
がTime
関連付けられると、関連付けが解除されるまで関連付けられたままになるため、問題にはなりません。
私はこれに関するヘルプを探しましたが、ほとんどの投稿は配列の作成についてのみ説明しており、関連付けが解除されたときにループがエントリを自動的に削除するのにどのように役立つかについては説明していません。
したがって、この例では、オブジェクト # と時刻を入力してスクリプトを実行し、最後に「時刻 4 で、オブジェクト 1 はグループ 1 と 3 に関連付けられている」と通知するシステムが必要です。別のシナリオは、「時間 3 で、オブジェクト 1 がグループ 1、2、3 に関連付けられている」です。最後に、時間 5 ですべてのオブジェクトの関連付けが解除された場合、メッセージにはオブジェクトが最後に関連付けられたグループが表示されます。
オブジェクトが複数のグループに関連付けられ、正確な情報を返すことができない状況に陥るまで、必要なすべてを実行するコードがあります。私のプログラミング知識は限られているので、あなたの助けに感謝します。以下は、セル (15, 8) と (18, 8) がオブジェクト # と時間の値入力セルである現在のコードです。
Private Sub CommandButton2_Click()
Dim Association As String, i As Integer, Group As Integer
Count = Application.WorksheetFunction.CountA(Range("A:A"))
For i = 1 To Count
If Cells (i, 1).Value = Cells(15, 8) And Cells (i, 4).Value <= Cells (18, 8) And Cells (i, 2) = "Associate" Then Association = "Associated"
If Cells (i, 1).Value = Cells(15, 8) And Cells (i, 4).Value <= Cells (18, 8) And Cells (i, 2) = "Disassociate" Then Association = "NOT Associated"
If Cells (i, 1).Value = Cells(15, 8) And Cells (i, 4).Value <= Cells (18, 8) And Cells (i, 2) = "Associate" Then Group = Cells(i, 3)
Next i
If Association = "Associated" Then MsgBox Association & " Associated to " & Group
If Association = "NOT Associated" Then Msgbox Association & " Was Last Associated to " & Group
If Association = "" Then Msgbox "Object Does Not Exist Prior to This Time"
End Sub