• ベストアンサー

VBAテキストボックスの数を必要に応じて増やす

現在、Excel2000を使用しています。 ユーザーフォーム内でテキストボックスを横並びに3つ設置しています。そこで 例えばコマンドボタンをクリックしたり、テキストボックス3でエンターキーを押すと、そのテキストボックスが下に3つ増えて、合計6個になるようにするのは可能でしょうか? 場合によってはテキストボックスが、9個、12個それ以上必要な場合 がでてきます。 やはり最初からいくつもテキストボックスを設置して、Visibleなどで 操作するしかないのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.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などを変えていけば良いでしょう

yasu7r
質問者

お礼

お返事が送れて申し訳ありません。 作って頂いたので試したところバッチリできました! ありがとうございます!!

その他の回答 (1)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

作るだけなら Private Sub CommandButton1_Click()   With Me.Controls.Add("Forms.TextBox.1")     .Top = 10     .Left = 10   End With End Sub で、出来ますが、予め最大数を作っておいてVisibleで操作するほうが楽なのでは

yasu7r
質問者

お礼

回答ありがとうございます。 このプロシージャで行うには毎回名前をひとつずつ設定しないといけないのでしょうか? やはりVisibleで操作する方が良いようですね。

関連するQ&A