| 
    
     |  | 皆さん、おはようございます。 
 >動的に作成しようと思えばできます。(Controls.Add メソッドを利用する)
 >ただし、イベントまで設定することはできません。
 クラスモジュールを使用するとそれらしいことは出来ます。
 
 ユーザーフォームをひとつ用意してください(Userform1)。
 
 クラスモジュール(Class1)に
 '===========================================================
 Public WithEvents chkbx As MSForms.CheckBox
 Public chkid As Long
 Private Sub chkbx_Change()
 MsgBox "チェックボックス" & chkid & "が " & IIf(chkbx.Value, "ON", "OFF") & " になりました"
 End Sub
 
 
 Userform1のモジュールに
 '=============================================
 Private cls_chkbx() As Class1
 Private clsnum As Variant
 '==============================================================
 Private Sub UserForm_Initialize()
 clsnum = Application.InputBox("チェックボックスの数を入力", , , , , , , 1)
 If TypeName(clsnum) <> "Boolean" Then
 If clsnum > 0 Then
 ReDim cls_chkbx(1 To clsnum)
 For idx = 1 To clsnum
 Set cls_chkbx(idx) = New Class1
 With cls_chkbx(idx)
 .chkid = idx
 Set .chkbx = Controls.Add("Forms.CheckBox.1")
 With .chkbx
 .Top = idx * 50 + 10
 .Left = 15
 .Height = 16
 .Font.Name = "MS ゴシック"
 .Font.Size = 16
 .Caption = "チェックボックス" & StrConv(idx, vbWide)
 .AutoSize = True
 End With
 End With
 Next idx
 With Me
 .Width = 200
 .Height = (clsnum + 1) * 50 + 30
 End With
 End If
 End If
 End Sub
 '======================================================
 Private Sub UserForm_Terminate()
 For idx = 1 To clsnum
 Set cls_chkbx(idx).chkbx = Nothing
 Set cls_chkbx(idx) = Nothing
 Next
 End Sub
 
 
 標準モジュールに
 
 '====================================
 sub main()
 userform1.show
 end sub
 
 としてmainを実行してみてください。
 
 |  |