- 締切済み
VBAでコントロールを動的に配置する方法
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- mt2015
- ベストアンサー率49% (258/524)
私もあらかじめ作っておいて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
- FEX2053
- ベストアンサー率37% (7991/21371)
あの・・・複雑に考えなくても、ほとんどのオブジェクトには .visibleプロパティがあって、そいつをTrue/Falseに設定することで 表示が見え隠れします。たとえば textbox1.visible=False textbox2.visible=True と、ダイアログを.Showする前に設定すれば、テキストボックス1は 見えなくなりますし、テキストボックス2は見えるようになります。 この辺は、VBAでもVBでも同じような動きをしますので、こちらを 参考にしていただくといいかと思います。 http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard17.htm
お礼
ご回答ありがとうございます。 最大数があらかじめ分かっているときは、良い方法ですね。 今後の参考にさせて頂きます。
お礼
ご回答ありがとうございます。 教えて頂いた方法を改良して、Nameプロパティに連番を設定してみました。 文字列処理が必要ですが、Nameプロパティを配列番号のように使用できるようになりました。