こんにちは。
下記のようなフォームにボタンを追加し、セルにデータを書き込み、最後に上書きするマクロを作ってみました。
セルのデータは上書きされますが、なぜかフォームは上書きされません。フォームの表示で追加したボタンも表示されます。
どなたかご教示願います。
--------------------------------------------
Sub testVBA()
Dim WOBJ As Object
With UserForm1
Set WOBJ = .Controls.Add("Forms.CommandButton.1", "MyCom", True)
End With
Range("A1").Value = "aaaaaaaaaaa"
ThisWorkbook.Save
UserForm1.Show
End Sub
No.1のおまけです。
動的にコントロールを追加した場合イベントプロシージャも動的に追加することになります。
たとえばクリックイベントでしたら
挿入でクラスモジュールを追加
Class1ができるのでそこに (名前は変更できます)
Private WithEvents mTarget As MSForms.CommandButton
Public Sub SetCtrl(New_Ctrl As MSForms.CommandButton)
Set mTarget = New_Ctrl
End Sub
Private Sub mTarget_Click()
'クリックイベントでしたいことを記載
MsgBox mTarget.Name & "がクリックされました"
End Sub
現在のコードのあるモジュールか標準モジュールに
Private mCtrl As New Class1 '一番上に クラスの名前を変更したらここのClass1も変更
Sub testVBA()
Dim WOBJ As Object
With UserForm1
Set WOBJ = .Controls.Add("Forms.CommandButton.1", "MyCom", True)
mCtrl.SetCtrl .Controls("MyCom") '←追加
End With
Range("A1").Value = "aaaaaaaaaaa"
ThisWorkbook.Save
UserForm1.Show
End Sub
お礼
皆様のご教示を参考に試行錯誤して目的を達成できました。 ありがとうございました。