テキストボックスの値をプロパティValueの値に書き換える方法

Loop繰り返し処理VBA ユーザーフォーム

テキストボックスに入力された文字が自動的に消去されたり、指定した値に戻って欲しいと思ったことありませんか?

波乗りアヒル
波乗りアヒル

いちいち入力後にBACK SPACEで消すの面倒ですよね。

スポンサーリンク


スポンサーリンク

コマンドボタンを押したらValue値に必ず戻そう

ユーザーフォームを使ってテキストボックスに入力した文字や数字などの値を、コマンドボタンを押すことにより目的のセルに転記する作業を繰り返し入力作業をしますよね。

その時にコマンドボタンを押したら、テキストボックスに入力した文字や数字などの値がそのまま残っています。

繰り返し入力を行う時はいちいちテキストボックスの値を消して、新しい文字や数字を入力するのは面倒ですし時間の無駄になり非効率ですね。

そこで、コマンドボタンを押したらユーザーフォームに配置されたテキストボックスの値を空欄にするVBAコードを追加しておく方法を以前お話ししましたが、空欄でなく特定の文字や数字を表示するようにするにはどのようにすればいいでしょうか?

一番簡単に考えると、どこか特定のセルの値をテキストボックスに転記する方法がありますが、コードを書いてみたらできるようになりましたが、気分的にすっきりしませんでした。

  1. コマンドボタンを押したら、セルに転記する
  2. テキストボックスの値をセル〇〇の値を読み込んで表示する
  3. 複数あれば繰り返す
波乗りアヒル
波乗りアヒル

一応これでできますが・・・

なぜ気分的にすっきりしないかと言うと、テキストボックスのコントロールプロパティに初期値としてValue値を設定しているので、ユーザーフォームを呼び出した時はValue値が表示されるのになんでわざわざセルの値を読み込まなくてはいけないのか?

どうせならば、コマンドボタンを押したらValue値を読み込んでテキストボックスに表示できないものか?

波乗りアヒル
波乗りアヒル

単純にそう思いますよね。

ネットで色々調べてみましたが、調べ方が悪いのかなかなかヒットしないのでちょっと苦労しましたが、何とかうまくいくVBAコードにたどり着きました。

まだまだ未熟でしたね。

無駄に複雑に考えすぎてこんな単純な事に気づかなかったのか?出来た瞬間、VBAコードを見て思わず笑っちゃいました。無駄な時間使っちゃって・・・

UserForm1.Controls(“TextBox1”).Value = UserForm1.Controls(“TextBox1”).Value

たった1行のこのVBAコードをEnd Subの1行上に追加するだけです。実際はテキストボックスが複数あり、1つは空欄で残りはValue値にするので、追加したVBAコード完成形はこれです。

TextBox1.Value = “”
Dim i As Integer
For i = 2 To 7
UserForm1.Controls(“TextBox” & i).Value = UserForm1.Controls(“TextBox” & i).Value
Next i
  1. テキストボックス1は空欄にする
  2. 繰り返しの為の変数「i」を宣言
  3. 変数「i」は2~7
  4. ユーザーフォーム1の各テキストボックスの値は、ユーザーフォーム1の各テキストボックスのプロパティのValue値にする
  5. 繰り返す

これで、テキストボックス1は空欄にして、その他のテキストボックスは変数「i」は2から7なのでテキストボックス2~テキストボックス7までを繰り返しValue値を表示するようになります。

波乗りアヒル
波乗りアヒル

ご覧いただきありがとうございます。

ブログランキングに登録しています。

少しでもお役に立てれば幸いで、参考になったようでしたら応援よろしくお願いします。


Microsoft Officeランキング

ユーザーフォームを使えばこんなに便利に早く作業が終わりますよ
波乗りアヒル
波乗りアヒル

エクセルの勉強お疲れ様です。ちょっとひと休みしませんか?