| 
    
     |  | ▼追加 さん: 
 www.vbalab.sakura.ne.jp/vbaqa/c-board.cgi?cmd=ntr;tree=76288;id=excel
 同じ方ですか?
 
 どんなエラーメッセージなのかは、記述してください。
 
 
 新規ブックにて
 
 ユーザーフォームを一つ作成してください(UserForm1)。
 
 このUserForm1には、コントロールは何も配置しないでください。
 コントロールは以下に記述するコードにて、配置しますので・・・。
 
 
 UserForm1のモジュールに、
 
 '=============================================================================
 Option Explicit
 Private WithEvents cmd1 As msforms.CommandButton
 Private WithEvents cmd2 As msforms.CommandButton
 Private frm As msforms.Frame
 '=============================================================================
 Private Sub cmd1_Click()
 With frm.Controls.Add("Forms.CheckBox.1", "chk0")
 .Left = 42
 .Top = 42
 .Width = 120
 .Height = 30
 .Caption = "チェック0"
 End With
 With frm.Controls.Add("Forms.CheckBox.1", "chk1")
 .Left = 174
 .Top = 42
 .Width = 120
 .Height = 30
 .Caption = "チェック1"
 End With
 With frm.Controls.Add("Forms.CheckBox.1", "chk2")
 .Left = 306
 .Top = 42
 .Width = 120
 .Height = 30
 .Caption = "チェック2"
 End With
 With frm.Controls.Add("Forms.Label.1", "lbl1")
 .Left = 36
 .Top = 102
 .Width = 108
 .Height = 24
 .BackColor = &HC0FFFF
 .Caption = "テスト ラベル"
 .SpecialEffect = 2
 .Font.Size = 16
 End With
 With frm.Controls.Add("Forms.TextBox.1", "txt1")
 .Left = 144
 .Top = 102
 .Width = 204
 .Height = 24
 .Font.Size = 14
 End With
 End Sub
 '=============================================================================
 Private Sub cmd2_Click()
 Dim ccc As msforms.Control, jjj As msforms.Control
 For Each ccc In Controls
 If ccc.Name = "Frame_tmp" Then
 For Each jjj In ccc.Controls
 Controls.Remove (jjj.Name)
 Next jjj
 Exit For '見つかったのでout
 End If
 Next ccc
 End Sub
 '=============================================================================
 Private Sub UserForm_Initialize()
 With Me
 .Width = 775
 .Height = 558
 Set cmd1 = .Controls.Add("Forms.CommandButton.1", "CommndButton1")
 With cmd1
 .Left = 12
 .Top = 42
 .Width = 90
 .Height = 42
 .Caption = "コントロール作成"
 End With
 Set cmd2 = .Controls.Add("Forms.CommandButton.1", "CommndButton1")
 With cmd2
 .Left = 108
 .Top = 42
 .Width = 90
 .Height = 42
 .Caption = "コントロール削除"
 End With
 Set frm = .Controls.Add("Forms.Frame.1", "Frame_tmp")
 With frm
 .Left = 12
 .Top = 96
 .Width = 744
 .Height = 432
 .Caption = "コントロール作成アリア"
 End With
 End With
 End Sub
 '=============================================================================
 Private Sub UserForm_Terminate()
 Set cmd1 = Nothing
 Set cmd2 = Nothing
 Set frm = Nothing
 End Sub
 
 
 標準モジュールに
 
 '=======================================================
 Option Explicit
 Sub test()
 UserForm1.Show
 End Sub
 
 
 コードは、以上です。
 
 
 testを実行してください。UserForm1が表示されます。
 
 
 コントロール作成、コントロール削除というコマンドボタン及び、コントロール作成エリア というフレームが表示されているはずです。
 
 
 「コントロール作成」コマンドボタンをクリックしてください。
 
 コントロール作成エリア内に、三つのチェックボックス(チェック0〜チェック2)、ラベル及び、テキストボックスが作成されます。
 
 
 次に「コントロール削除」コマンドボタンをクリックしてください。
 
 作成されたコントロールが削除されます。
 このコントロール削除ボタンには、追加さんが投稿されたコードをそのまま使っています(cmd2_Click)。
 
 
 どこが違うのか考察してみてください。
 
 尚、
 Removeメソッドは、VBEにて事前に作成したコントロールは、削除できません。
 
 
 |  |