• 締切済み

VBAでコントロールを動的に配置する方法

VBAでコントロールを動的に配置する方法を教えて下さい。 フォームに n組のチェックボックスとテキストボックスを横方向に動的配置し、標準モジュールからチェックボックスを チェックボックス(x) x=1~n のように配列のような制御したいのです。 画像で見て頂くと、チェックボックスとテキストボックスが n によって縦方向に追加されるイメージです。 どなたか、お知恵を貸してください。

みんなの回答

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.2

私もあらかじめ作っておいてvisibleのTRUE/FALSEでやることをお勧めしますが どうしてもというならばこんな感じでしょうか。 エラー処理等一切行っていないサンプルです。 Sub UserForm_Initialize()   n = 5   For i = 1 To n     Set myCheckBox = Me.Controls.Add("Forms.CheckBox.1")     With myCheckBox       .Height = 20       .Width = 20       .Left = 10       .Top = (i - 1) * .Height + 10       .Caption = ""     End With     Set myTextBox = Me.Controls.Add("Forms.TextBox.1")     With myTextBox       .Height = 20       .Width = 80       .Left = 30       .Top = (i - 1) * .Height + 10     End With   Next i End Sub

masnoske
質問者

お礼

ご回答ありがとうございます。 教えて頂いた方法を改良して、Nameプロパティに連番を設定してみました。 文字列処理が必要ですが、Nameプロパティを配列番号のように使用できるようになりました。

  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.1

あの・・・複雑に考えなくても、ほとんどのオブジェクトには .visibleプロパティがあって、そいつをTrue/Falseに設定することで 表示が見え隠れします。たとえば textbox1.visible=False textbox2.visible=True と、ダイアログを.Showする前に設定すれば、テキストボックス1は 見えなくなりますし、テキストボックス2は見えるようになります。 この辺は、VBAでもVBでも同じような動きをしますので、こちらを 参考にしていただくといいかと思います。 http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard17.htm

masnoske
質問者

お礼

ご回答ありがとうございます。 最大数があらかじめ分かっているときは、良い方法ですね。 今後の参考にさせて頂きます。

関連するQ&A