Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6009 / 76734 ←次へ | 前へ→

【76328】Re:できません。
発言  ichinose  - 14/10/31(金) 0:05 -

引用なし
パスワード
   ▼追加 さん:

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

1 hits

【76322】できません。 追加 14/10/30(木) 13:52 質問[未読]
【76328】Re:できません。 ichinose 14/10/31(金) 0:05 発言[未読]

6009 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free