|
▼追加 さん:
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にて事前に作成したコントロールは、削除できません。
|
|