ユーザーフォームの複数のテキストボックスを一括空欄にする方法
エクセルVBAを使ってテキストボックスに文字や数字を入力した後に、再度入力する際に毎回入力済みのテキストボックスに前回の文字や数字が残ってしまい、消去するのって面倒だと思ったことはありませんか?
そこで文字入力後にコマンドボタンを押したら、入力済みテキストボックスを自動消去するVBAコードを付け足せば解決しますよ。
テキストボックスの値を消去するVBA
入力していないテキストボックスの初期設定は当然ながら空欄になっていますので、入力済みテキストボックスの値を初期化(空欄)にするVBAコードを書き足せば、簡単に空欄にすることができます。
- テキストボックスに文字や数字を入力する
- コマンドボタンに指定したセルへ転記する
- 入力済みテキストボックスを空欄にする
上記画像の手順はこのようになるので、この手順をVBAコードにしてユーザーフォームに配置したコマンドボタン3つに書けば完成するということです。
Private Sub CommandButton1_Click()
Range(“A1”).Value = TextBox1.Value
Range(“A2”).Value = TextBox2.Value
Range(“A3”).Value = TextBox3.Value
TextBox1.Value = “”
TextBox2.Value = “”
TextBox3.Value = “”
End Sub
- コマンドボタン1がクリックされたら
- セルA1の値はテキストボックス1の値にする
- セルA2の値はテキストボックス2の値にする
- セルA3の値はテキストボックス3の値にする
- テキストボックス1を空欄にする
- テキストボックス2を空欄にする
- テキストボックス3を空欄にする
- マクロ記録終了
このようにセルの値を(Value)を””(空欄)に指定すれば簡単にテキストボックスの値を初期化(空欄)にすることができました。
このように入力済みテキストボックスを空欄に戻す事は非常に使い勝手に直結しますので、必ずVBAコードを付け加えておくことが大事で、住所録作成などでも使っています。
複数のテキストボックスの値を一括空欄処理
先ほどのように3つのテキストボックスならば、数が少ないので1つずつVBAコードを書いていけばいいのですが、10個・20個~50個もあったら繰り返しこのようなVBAコードを書き続けるのって面倒じゃありませんか?
そこでたくさんテキストボックスがある場合は、エクセルVBAで使用頻度の高い「指定した回数だけ処理を繰り返す」For~Nextを使います。
ここでは、ユーザーフォームに配置した50個のテキストボックスに入力された文字や数字などの値を、セルにそれぞれ指定したセルに転記するようにコマンドボタンに書いて、入力を空欄に戻すVBAコードを紹介します。
Private Sub CommandButton1_Click()
For i = 1 To 50
Cells(i , 0).Value = UserForm1.Controls(“TextBox” & i).Value
UserForm1.Controls(“TextBox” & i).Value = “”
Next i
End Sub
- コマンドボタン1がクリックされたら
- 数字が変わる部分を変数「i」を宣言し変わる数字が1~50
- セル(i,0)の値はユーザーフォーム1に配置されたコントロール(テキストボックス番号の変数「i」の値を転記する
- ユーザーフォーム1のコントロール(テキストボックス番号の変数「i」)←【1~50】=空欄
- この作業を「i」に書いてある1~50まで繰り返して行う
- マクロ記録終了
これでユーザーフォーム1に配置されたテキストボックス1~50全ての値をセルA1~A50に転記した後に入力済みテキストボックスの値が一括で空欄にできるようになりました。