1
簡単に言えば、ここにある例:How to add events to Controls created at runtime in Excel with VBAを試してみましたが、自分のボタンをクリックしても何も起こりません。VBAユーザーフォームの動的に作成されたボタンにイベントを追加できません
私は一度にたくさんのボタンを作成していないのですが、ユーザーが特定の追加済みボタンをクリックするたびに新しいボタンが追加されます。
ボタン作成のためのコード:
'Finally the delete button
Dim newb As MSForms.CommandButton
'thisQuant is a var keeping track of how many buttons there are
Set newb = FProducts.Controls.Add("Forms.CommandButton.1", "del" & thisQuant, False)
Dim Button As New Class1
Set Button.delButton = newb
そして例で述べたように、新しいクラス:
Public WithEvents delButton As MSForms.CommandButton
Private Sub delButton_Click()
MsgBox "test"
'quantProd = CInt(NewNota.ProductQuant.Caption)
End Sub
は、私は、Pythonから来て、VBAは非常に混乱しています。
おそらくあなたはあなたのコードを[mcve]に表示する必要があります。他の解決法が機能するはずなので、最初のアプローチは*そのまま*そのままコピー/実装し、それが動作するかどうかを確認することです。必要に応じて新しいワークブックでそれを行います。私は他のソリューションでは、フォームのコンストラクタにボタン*配列*を作成していることに気付きました: 'Dim ButArray()As New Class2'(' Class2'はボタンイベントクラスのクラスモジュールです。 –
これを行う最も一般的な問題は、Class1インスタンスをグローバルとして宣言することを忘れることです(つまり、モジュールの上部ではなく、サブモジュールではなく)。関数を呼び出す)ので、範囲外になり、ボタンを作成するコードが終了するとすぐに破棄されます。 –
@TimWilliams Yup、ありがとうございました。モジュールで宣言できます。完全な回答を投稿する – Mojimi