複数テキストボックスの入力値を一括して各セルへ記載する方法

エクセル検索
HOMEUserForm印刷画面ファイル図形
日付・時刻データセル関数VBA関数

ユーザーフォームに配置した複数のテキストボックスの値をそれぞれ指定したセルへ次々とまとめて一括転送したいと思ったことありませんか?

そして記載するVBAコードもテキストボックスの個数分、書き続けるのは面倒なので、繰り返し処理をするFor~Nextステートメントの使い方をご紹介します。

テキストボックスの値をセルに書き写す方法

まずは基本の1つのテキストボックスの値をセルA1に書き出しVBAコードは、下記のようになります。

VBAコード

Private Sub CommandButton1_Click()
Range(“A1”).Value = UserForm1.TextBox1.Value
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. セルA1にユーザーフォーム1のテキストボックス1に入力された値を転記する
  3. マクロの記述終了

このようにVBAコードを記述すれば1個の場合は簡単で、2個の場合は2行目に同じように記述すればOKです。

VBAコード

Private Sub CommandButton1_Click()
Range(“A1”).Value = UserForm1.TextBox1.Value
Range(“A2”).Value = UserForm1.TextBox2.Value
End Sub

ここまでは、何の問題もなくVBAコードを覚えたての頃でもすぐにできるようになっていると思います。

テキストボックスが複数ある場合のセルへの一括転記方法

さあ本題で、セルが10個あったらもちろん10行VBAコードを書きづつければ、何の問題も無く完成できますが、100個だったらどうします?

そこで、繰り返し処理をするFor~Nextステートメントを使って、短いVBAコードでたくさんの処理をまとめて一括処理できるようにしましょう。

波乗りアヒル

For~Nextステートメントは、指定した回数だけ同じ処理を繰り返すことができる便利なVBAコードです。

例えば、テキストボックス1~10の値をまとめてセルA1~A10に転記するというVBAコードを書くと下記のようになります。

VBAコード

Private Sub CommandButton1_Click()
Dim i As Integer
With UserForm1
For i = 1 To 10
Cells(i , 1).Value = UserForm1.Controls(“TextBox” & i).Value
Next i
End With
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. 整数型の変数iを宣言する
  3. ユーザーフォーム1での処理
  4. 変数が1~10まで行う
  5. セル(i,1)の値はユーザーフォーム1に配置したテキストボックスiの値とする
  6. 処理を繰り返す
  7. Withステートメント終了
  8. マクロ記述終了

ここで大事なのが、数字が変わる変数「i」です。

「i」には1~10までの値が入る事になるので、セル(i,1)はセルA1になり、テキストボックス1の値が転記されることになります。

次はセル(2,1)なのでA2でテキストボックス2・・・10となります。

波乗りアヒル

変数「i」は適当につけた名前なので、aでもbでもaaaでも何でもいいので好きな変数名つけても大丈夫ですよ。

実際に使っているエクセルでは、数字入力が基本なので、整数型を指定する1行
Dim i As Integer」を省略しても問題なくマクロ動いています。

変数iに当てはめる行番号とテキストボックス番号が異なる時の対処法

先ほどまでは、テキストボックス番号とセルの行番号が同じ場合の例としてご紹介しましたが、このようなことは稀で実際のところは、異なることがほとんどなので、変数「i」の対処法をご紹介します。

  • テキストボックスの番号が1~10
  • 転記したいセルはA4~A13(1~3行目までタイトルや項目で使用)
  • Dim i As Integerは省略
VBAコード

Private Sub CommandButton1_Click()
With UserForm1
For i = 1 To 10
Cells(i +3, 1).Value = UserForm1.Controls(“TextBox” & i).Value
Next i
End With
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. ユーザーフォーム1での処理
  3. 変数が1~10まで行う
  4. セル(i+3,1)の値はユーザーフォーム1に配置したテキストボックスiの値とする
  5. 処理を繰り返す
  6. Withステートメント終了
  7. マクロ記述終了

変数iに「+」を加えればある程度対応できますが、「-」を使う事も可能で、時々やむを得ず使うこともあります。もちろん問題なくマクロは動いています。

波乗りアヒル

テキストボックス番号に合わせるので、セルi+3とすることにより、最初の変数が1になるので+3することで4行目からスタートすることになります。

関連記事

どこかにビューーン
ちょっとの工夫で往復無料の時代が来た!!

新着ページ

よく見られているページ

大容量無料ファイル転送サービス【ACデータ】 無料イラスト【イラストAC】

紅葉スポット

2024年5月11日からマイルと楽天ポイントとの相互交換提携開始!

交換レート0.5:1なので半分になってしまいますが、使い方次第で実質3倍の価値まで引き上げられる方法です。