実行時に作成されるCommandButton
のコードを作成する必要があります。このコマンドボタンは、ユーザーデータに基づいているため動的です。実行時に作成されたコマンドボタンのコードが機能しません[Excel VBA]
User_Fromコード
Private Sub UserForm_Activate()
Dim ctlTXT As Control
For RevNo = 1 To RevCounter
Set ctlTXT = Me.Controls.Add("Forms.CommandButton.1")
ctlTXT.name = RevNo
ctlTXT.Caption = Sheet4.Range("D" & RevNo + 4).value
ctlTXT.Left = 18
ctlTXT.Height = 18: ctlTXT.Width = 72
ctlTXT.Top = 15 + ((RevNo - 1) * 25)
Next
Me.Height = (RevNo * 17) + 50
ReDim Preserve cmdArray(1 To RevNo)
Set cmdArray(RevNo).CmdEvents = ctlTXT
Set ctlTXT = Nothing
End Sub
クラスモジュールのコード
Private Sub CmdEvents_Click()
Dim i As Integer
i = CmdEvents.name
RevisionFormPrevious.LblResponsible.Caption = Sheet4.Range("C" & i +4).value
RevisionFormPrevious.LblEdition.Caption = Sheet4.Range("D" & i + 4).value
RevisionFormPrevious.LblTelNo.Caption = Sheet4.Range("E" & i + 4).value
RevisionFormPrevious.LblFeatures.Caption = Sheet4.Range("D" & i + 4).value
RevisionFormPrevious.Features.value = Sheet4.Range("F" & i + 4).value
Load RevisionFormPrevious
RevisionFormPrevious.Show
End Sub
問題が作成した複数のボタンがある場合は、コードが唯一の作品であり、最後に作成されたボタン。最初と2番目のボタンがクリックされたとき、何も起こらなかった。
ここで、 'RevCounter'が宣言され、読み込まれ、呼び出されたときの値は何ですか? –
あなたのクラスの名前は何ですか?あなたの 'Class'コードでは、' Public WithEvents CmdEvents As MSForms.CommandButton'を追加する必要があります。次に 'Sub'で' Dim ctlTXT As As MSForms.CommandButton'を使用して定義する必要があります。 –
@MarkFitzgerald RevCounter is別のモジュールでパブリックとして宣言されています。呼び出し時の値は、使用可能なリビジョンの合計数です。 –