ユーザーフォームの複数のテキストボックスにセルの値をまとめて記載する

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

セルA1~A10の値をテキストボックス1~10にそれぞれ取り込み表示させたいと思いませんか?

1個1個VBAコードを書いてもいいのですが、10個や20個と増えてきたら面倒なので一括取り込みしましょう。

スポンサーリンク

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

ユーザーフォームに配置しているテキストボックス(TextBox)が数個ならばひとつひとつコードを記述すればいいけど、たくさんあったらコードを書き続けるのはとても面倒ですし、間違えの原因になりますよね。

例えば、セルA1、A2、A3に記載された文字や数字を指定したユーザーフォームに配置されたテキストボックス(TextBox1,2,3)にコマンドボタンを押すと転記するコードを書いてみます。

記載されているシートは、Sheet1。

転記したいユーザーフォームは、UserForm1、テキストボックスは、TextBox1,2,3。

転記実行ボタンは、CommandButton1。

セル➡テキストボックス

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

これで、コマンドボタンを押すとユーザーフォームに配置しているTextBox1にsheet1のセルA1、TextBox2にsheet1のセルA2、TextBox3にsheet1のセルA3、がそれぞれ転記されます。

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

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

For~Next

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

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

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

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

一括処理するVBAコード

Private Sub CommandButton1_Click()
Dim i As Long
With UserForm1
For i = 201 To 240
UserForm1.Controls(“TextBox” & i – 200).Value = Worksheets(“sheet1”).Cells(i, “A”).Value
Next i
End With
End Sub

VBA解説
  1. ユーザーフォームのコマンドボタン(CommandButton1)を押したら
  2. 数字が変わる部分を変数「i」として、変わる数字が201~240
  3. 変数「i」-200は、TextBox1~40に指定することです。(-200を入れないとTextBoxも201~240となって存在しないのでエラーになってしまうためです。)
  4. 「”A”」はA列を表しています。セルで言うと最初のセルは「A201」、最後のセルは「A240」になります。
  5. Valueで転記するという指示です。
  6. ユーザーフォーム(UserForm1)に設置されているコントロールのテキストボックス(TextBox「i」も1~40)に入力された値とイコールにする。
  7. この作業を「i」に書いてある1~40まで繰り返して行う

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

これでTextBox1の値はセル「A201」から取得、TextBox40の値はセル「A240」と、順番にセルの値をテキストボックスに順番に転記してくれます。

ユーザーフォームでオリジナル入力画面を作る為に、この3つさえあれば、簡単なオリジナル入力画面を作ることができますので、使用例や活用例をまとめています。

スポンサーリンク

ユーザーフォームでオリジナルフォーム作ろう

エクセルの作業時間を短縮して効率よく作業を可能にする「ユーザーフォーム」を使いこなすには、基本を押さえておきましょう。

1日400人ぐらいの方が見ていただいている意外と人気ページなんです。

文字を入力するのに絶対使うTextBox

ユーザーフォームにテキストボックスを使わないで済むのは、確認画面ぐらいかな?

テキストボックスとセルをリンクさせる様々な方法を組み合わせれば、作業時間はあっという間に短縮できます。

文字列だけじゃない!Labelもクリックできるので可能性大

ラベルといえばテキストボックスの説明として文字列で表示させるのが、基本の使い方ですがクリックするとプログラムを実行させることもできるのです。

工夫次第でできることは無限大に広がります。

どんなVBAコードをコマンドボタンに記述しますか?

ボタンをクリックすると記述したプログラムが作動して、繰り返し作業や手間がかかったことが一瞬で完了させることができます。

あんなこともこんなこともできちゃいますよ。

波乗りアヒル
波乗りアヒル

ご覧いただきありがとうございます。

ブログランキングに登録しています。

少しでもお役に立てれば幸いで、参考になったようでしたら応援よろしくお願いします。


Microsoft Officeランキング

ユーザーフォームを使えばこんなに便利に早く作業が終わりますよ
波乗りアヒル
波乗りアヒル

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