ユーザーフォームに配置した複数のテキストボックスの値をそれぞれ指定したセルへ次々とまとめて一括転送したいと思ったことありませんか?
そして記載する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行目からスタートすることになります。
関連記事
紅葉スポット
-
ムーミンをイメージしたトーベ・ヤンソンあけぼの子どもの森公園の紅葉
入間市と飯能市の境界にある自然公園で、ムーミンの世界をイメージして作られてライトアップも盛んに行われて、幻想的な世界を体験することができます。 また、秋の紅葉… -
日本三名瀑・袋田の滝は紅葉ライトアップの名所で袋田駅からバス
日本三名瀑でもある袋田の滝は、高さ120m幅70mの大きさを誇りトンネル横の展望台からは、目の前に迫った滝を見ることができます。 そしてエレベーターで昇った展望台… -
紅葉の寸又峡コバルトブルーの夢の吊橋へ滞在時間2時間
サンドウィッチマンとゲストがバスで旅するバスサンドの放送を見て、ビックリするほど綺麗なコバルトブルーの湖にかかる吊り橋がとても気になったので、夏に青春18きっ… -
長門峡の紅葉橋・竜宮淵へバスで紅葉も雪景色も楽しめる萩紅葉名所
日本の自然100選にも選ばれ紅葉シーズンには臨時シャトルバスも運行される長門峡(ちょうもんきょう)へは、JR山口線でも防長交通バスでも行くことができるので、全長5…. -
フリーきっぷで行く群馬県内の紅葉名所や穴場スポット21選
渋滞避けて電車とバスでのんびり紅葉を見に行きませんか?群馬県の山間部ならば9月中旬頃から紅葉が見られる名所・スポットがありますので、少し早い秋の訪れを感じに出… -
佐白山麓公園の笠間城跡へバスで友部駅・笠間駅から滞在時間40分
紅葉の名所で茨城県を真っ先に探す人は少ないと思いますし、見つけたとしても花貫渓谷や袋田の滝、そして次に水戸偕楽園のもみじ谷や筑波山が茨城県内の紅葉スポットと…