ユーザーフォームに配置した複数のテキストボックスの値をそれぞれ指定したセルへ次々とまとめて一括転送したいと思ったことありませんか?
そして記載する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に「+」を加えればある程度対応できますが、「-」を使う事も可能で、時々やむを得ず使うこともあります。もちろん問題なくマクロは動いています。
テキストボックス番号に合わせるので、セルi+3とすることにより、最初の変数が1になるので+3することで4行目からスタートすることになります。
関連記事
紅葉スポット
-
フリーきっぷで行く埼玉県内の紅葉名所や穴場スポット12選
紅葉絶景めぐりといえば日光や軽井沢が人気紅葉スポットですが、人混みを避けてお得なフリーパスを使って最寄り駅からバスでゆったり紅葉を見に行ってみませんか? 埼玉… -
宝徳寺の紅葉へ関東では貴重な本堂の床に反射する床もみじが見られる
【紅葉見頃】10月中旬~11月下旬 京都でたくさんのお寺で見られる本堂の床に映り込んで真っ赤な紅葉が見られる床もみじが、関東では貴重で群馬県桐生市にある宝徳寺で… -
十勝岳望岳台へ活火山の溶岩と山頂部の雪化粧と紅葉の三段紅葉絶景
北海道のほぼ真ん中に位置して旭岳・美瑛藤・上富良野岳などが一望でき、さらに旭川市街や富良野市街までも見ることができる絶景スポットです。 標高930mの十勝岳は9月… -
雲場池へバスで軽井沢駅から紅葉絶景観光スポットへ滞在時間50分
【紅葉見頃】10月中旬~11月中旬 避暑地軽井沢は実は紅葉も綺麗に見られる観光スポットでも知られ、紅葉名所の雲場池は軽井沢駅から1.3㎞程なので徒歩でも行けますし… -
花園渓谷の花園神社紅葉ライトアップへ磯原駅から観光周遊バスで行く
茨城県の最北端にある北茨城市でもう少し北上すれば福島県という位置なので、東京からだとかなり遠いですが、山間部の花園花貫県立自然公園という名の通り大自然の中を… -
茨城県大子町の永源寺へ常陸大子駅から徒歩圏内の紅葉スポットへ
【紅葉見頃】 茨城県の大子町に紅葉名所の「永源寺」があり、境内を埋め尽くすほどのもみじの木があることから「もみじ寺」と呼ばれています。 近くには名瀑で有名な…