ユーザーフォームに配置した複数のテキストボックスの値をそれぞれ指定したセルへ次々とまとめて一括転送したいと思ったことありませんか?
そして記載するVBAコードもテキストボックスの個数分、書き続けるのは面倒なので、繰り返し処理をするFor~Nextステートメントの使い方をご紹介します。
テキストボックスの値をセルに書き写す方法
まずは基本の1つのテキストボックスの値をセルA1に書き出しVBAコードは、下記のようになります。
Private Sub CommandButton1_Click()
Range(“A1”).Value = UserForm1.TextBox1.Value
End Sub
- コマンドボタン1がクリックされたら
- セルA1にユーザーフォーム1のテキストボックス1に入力された値を転記する
- マクロの記述終了
このようにVBAコードを記述すれば1個の場合は簡単で、2個の場合は2行目に同じように記述すればOKです。
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コードを書くと下記のようになります。
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がクリックされたら
- 整数型の変数iを宣言する
- ユーザーフォーム1での処理
- 変数が1~10まで行う
- セル(i,1)の値はユーザーフォーム1に配置したテキストボックスiの値とする
- 処理を繰り返す
- Withステートメント終了
- マクロ記述終了
ここで大事なのが、数字が変わる変数「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は省略
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での処理
- 変数が1~10まで行う
- セル(i+3,1)の値はユーザーフォーム1に配置したテキストボックスiの値とする
- 処理を繰り返す
- Withステートメント終了
- マクロ記述終了



テキストボックス番号に合わせるので、セルi+3とすることにより、最初の変数が1になるので+3することで4行目からスタートすることになります。
変数iに「+」を加えればある程度対応できますが、「-」を使う事も可能で、時々やむを得ず使うこともあります。もちろん問題なくマクロは動いています。


よく見られているページ
-
エクセルの計算式の値を数字として読み取るVALUE関数
-
VBAの画面のちらつきがたった1行で解決して処理高速化する方法
-
COUNT関数を使って参加人数を自動的に数えるエクセル関数使用法
-
エクセルの時刻表示を0:00ではなく24:00にする方法
-
チェックボックスでチェック有と無しそれぞれの処理を変える方法
-
1クリックで上書き保存してエクセルファイルを閉じる方法
-
エクセル計算式が#VALUE!エラーになったセルを空欄にする方法
-
条件に一致したセルを繰り返し探してVBAで文字色を変える方法
-
コマンドボタンの色をクリックするたびに黒色と赤色を入れ替える方法
-
エクセルシートの保護したらマクロエラーになった時のVBA対処法


新着ページ