- ベストアンサー
VBAテキストボックスの数を必要に応じて増やす
現在、Excel2000を使用しています。 ユーザーフォーム内でテキストボックスを横並びに3つ設置しています。そこで 例えばコマンドボタンをクリックしたり、テキストボックス3でエンターキーを押すと、そのテキストボックスが下に3つ増えて、合計6個になるようにするのは可能でしょうか? 場合によってはテキストボックスが、9個、12個それ以上必要な場合 がでてきます。 やはり最初からいくつもテキストボックスを設置して、Visibleなどで 操作するしかないのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Visibleでのサンプルを作ってみました。新規UserFormで試してください UserForm上にTextBox 横に3個、縦に4列 計12個とCommandButton1 1個 設けてください 'ユーザーフォームモジュールに Dim TB(1 To 12) As Control Dim n As Long Private Sub UserForm_Initialize() Dim i As Long For i = 1 To 12 Set TB(i) = Me.Controls("TextBox" & i) Next i 'Text4以降、非表示 For i = 4 To 12 TB(i).Visible = False Next i n = 3 End Sub Private Sub CommandButton1_Click() If n = 12 Then Exit Sub Call 表示処理 End Sub Private Sub TextBox3_Enter() If TB(4).Visible Then Exit Sub Call 表示処理 End Sub Private Sub TextBox6_Enter() If TB(7).Visible Then Exit Sub Call 表示処理 End Sub Private Sub TextBox9_Enter() If TB(10).Visible Then Exit Sub Call 表示処理 End Sub Private Sub 表示処理() Dim i As Long For i = n + 1 To n + 3 TB(i).Visible = True Next n = n + 3 End Sub こんな感じで、あとは表示されるテキストボックス数で ユーザーフォームのHeightなどを変えていけば良いでしょう
その他の回答 (1)
- watabe007
- ベストアンサー率62% (476/760)
作るだけなら Private Sub CommandButton1_Click() With Me.Controls.Add("Forms.TextBox.1") .Top = 10 .Left = 10 End With End Sub で、出来ますが、予め最大数を作っておいてVisibleで操作するほうが楽なのでは
お礼
回答ありがとうございます。 このプロシージャで行うには毎回名前をひとつずつ設定しないといけないのでしょうか? やはりVisibleで操作する方が良いようですね。
お礼
お返事が送れて申し訳ありません。 作って頂いたので試したところバッチリできました! ありがとうございます!!