ユーザーフォームの複数のテキストボックスの値をまとめてセルへ入力

Loop繰り返し処理VBA テキストボックス

スポンサーリンク


スポンサーリンク


スポンサーリンク

TextBox1の値はセルA1へ…TextBox10の値はセルA10へ

ユーザーフォームに配置しているテキストボックス(TextBox)が数個ならばひとつひとつコードを記述すればいいけど、

たくさんあったらコードを書き続けるのはとても面倒ですし、間違えの原因になりますよね。

例えば、TextBox1、2、3に入力した文字や数字を指定したシートのセルに記述する(転記)コードを書いてみます。

転記するシートは、Sheet1。セルはA1、A2、A3とすると、下記のようになります。

Private Sub CommandButton1_Click()
Worksheets(“sheet1”).Range(“A1”).Value = TextBox1.Value
Worksheets(“sheet1”).Range(“A2”).Value = TextBox2.Value
Worksheets(“sheet1”).Range(“A3”).Value = TextBox3.Value
End Sub

これで、コマンドボタンを押すとユーザーフォームに配置しているTextBox1に入力された文字や数字はSheet1のセルA1に、

TextBox2に入力された文字や数字はSheet1のセルA2に、

TextBox3に入力された文字や数字はSheet1のセルA3に、必ず転記されます。

このように3つぐらいなら、コードも短いですし、間違えることは無さそうなのですが、

これが、10個、20個、30個・・・となったら大変ですよね。

For~Next

そこで、エクセルVBAで多く使われているFor~Nextですが、「指定した回数だけ処理を繰り返す」というものです。

ユーザーフォームに配置したそれぞれのテキストボックスに入力された値が、コマンドボタンで指定したセルに転記されます。

とても便利で簡単なので使わないなんて損ですよね。

実際には下記のようなコードを書いています。

Private Sub CommandButton1_Click()
Dim i As Long
With UserForm1
For i = 1 To 50
Cells(i + 100, “F”).Value = UserForm1.Controls(“TextBox” & i).Value
Next i
End With
End Sub

これが基本的に繰り返しそれぞれのテキストボックス入力された値をセルにそれぞれ転記するコードになります。

※転記するシートはユーザーフォームが開いているシート上です。(シート指定していません)

  1. ユーザーフォームのコマンドボタン(CommandButton1)を押したら
  2. 数字が変わる部分を変数「i」として、変わる数字が1~50
  3. 変数「i」+100は、「i」+100行目という事なので101行目~150行までになります。
  4. 「”F”」はF列を表しています。セルで言うと最初のセルは「F101」、最後のセルは「F150」になります。
  5. Valueで転記するという指示です。
  6. ユーザーフォーム(UserForm1)に設置されているコントロールのテキストボックス(TextBox「i」も1~50)に入力された値とイコールにする。
  7. この作業を「i」に書いてある1~50まで繰り返して行う

これでTextBox1の値はセル「F101」へ転記、TextBox50の値はセル「F150」と、順番にテキストボックスの値を順番に転記してくれます。
スポンサーリンク

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

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

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

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

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

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

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

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