テキストボックスの一括処理について。 現在、ユーザーフォームにテキストボックスが50個設置されています。 フォームを読み込んだ時は、テキストボックス1以外は非表示設定です。

Visual Basic | Excel114閲覧xmlns="http://www.w3.org/2000/svg">50

ベストアンサー

1

1人がナイス!しています

ThanksImg質問者からのお礼コメント

ありがとうございました。 コンボボックスにも適用できそうなので、今後の勉強に役立ちました。

お礼日時:5/17 20:07

その他の回答(2件)

0

最も単純な考え方としては、テキストボックスを順番に配列に入れて置き、配列の先頭から処理するようにしていくことでしょう。 例えば… ---- 'テキストボックス配列 Private tbArray as TextBox() {TextBox1,TextBox2,...} Private Sub TextBox_Changed(...) '事前にイベントハンドラに登録しておく Dim tb as TextBox = (TextBox)sender 'イベント発生元 'テキストボックス配列をループ For i As Integer = 0 To tbArray.Length -1 'イベント送信元判別 If tb = tbArray(i) Then 'イベント送信元と同じテキストボックスが見つかったら、次のテキストボックスを表示 tbArray(i+1).Visible = True End If End For End Sub ---- のようにすれば、テキストボックスの数に関係なく処理できると思います。 ※コードはイメージです。 テキストボックスの配列を作るのが面倒という場合は、テキストボックスが乗っているフォーム配下のコントロール全てを対象に行うという方法もあります。 ただこの場合、制御対象とするコントロールとその順番をきちんと制御する(制御できるように画面を作る)必要があるでしょうから、かなりややこしくなると思います。

0

TextBox1を50個作ってIndexで管理すれば良い Text1(0).Visible=True; Text1(1).Visible=True; Text1(2).Visible=True; まあこんな感じ Private Sub TextBox1_Change(Index as Integer) { TextBox1(Index+1).Visible=True }

返信ありがとうございます。 テキストボックスの値をシートに反映させるコードをすでに書いているので、その修正が必要になってしまいます。 もし、他に方法があれば宜しくお願いします。