テキストボックスの値をプロパティ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値を表示するようになります。

各コントロールまとめて転記シリーズ

ユーザーフォームを使うと配置したコントロール(テキストボックスやラベルなど)とセルとの間で値のやり取りが多くなります。

よく使うのでまとめてみました。

値の場所転記したい場所説明ページ
セルの値ラベル名VBAコード
セルの値テキストボックスの値VBAコード
セルの値コマンドボタンの表示名VBAコード
セルの値セルの値VBAコード
テキストボックス入力値セルの値VBAコード
波乗りアヒル
波乗りアヒル

成績表作成には知っておきたいExcel-VBAもくじ

ボウリングハンデキャップのつけ方
HDCPの種類はリーグのルールにより複雑に ボウリングの成績表(リーグ戦)で必ず必要になるのが、ハンデキャップ(HDCP)です。 ボウリングご予約の時に一番多く使われているのが、女性にだけハンデキャップをつけてあげることが多いですね。 だいだい何点ぐらいのハンデキャップが多いの?
ボウリングリーグ対戦表の数字を名前に自動変換する方法
リーグ戦の対戦表をエクセルで作る時、数字で表されている番号を名前に自動的に変換できると作業時間が短くなり効率的ですね。たった2つのエクセル関数を使うだけで、簡単にできるんです。今回の回戦数を入力するだけで一発変換完了。もちろんお客様にスケジュール対戦表として渡すことも簡単ですよ。
人数に応じてリーグ対戦表を自動選択する方法
複数の表があり、条件に合った表を選んで、さらにセルの値を選んで数字を名前に自動変換できると、とても便利なエクセルができますよね。ボウリングのリーグ対戦表も人数により表が異なるので、参加人数が決まったら、自動的に表を選んで対戦番号がこれも自動的に参加者名に変換されると便利で作業効率がアップして時間短縮になりますよ。
波乗りアヒル
波乗りアヒル

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

タイトルとURLをコピーしました