本記事では「ユーザーフォームのテキストボックスに入力された値を標準モジュールのマクロに渡す」方法について解説していきます。
ツールを作るうえでフォームとマクロ間での値のやり取りは必要になってくるので、ぜひ覚えていってください。
ユーザーフォームのテキストボックスから値を取得する方法
ここでは「ユーザーフォーム上のテキストボックスに入力された値を標準モジュール上のマクロに渡す」という内容をシンプルなコードで解説していきます。
また、ここでは「今回使うユーザーフォーム」→「呼び出すマクロについて」→「ユーザーフォーム上のテキストボックスの値を取得」の順に解説していきます。
初めに:ここで使うユーザーフォーム
ここで使うユーザーフォームは下の通りです。
上のユーザーフォームに設置されたテキストボックスは「TextBox1」、コマンドボタンは「btnOk」というオブジェクト名となっています。
このオブジェクト名を使って値のやり取りを行うので、覚えておいてください。
テキストボックスの値を渡すマクロ
ここでは単純に「ユーザーモジュールのテキストボックスに入力された値をメッセージボックスで出力する」という内容にしておきます。
下が標準モジュール上にあるマクロ内容になります。
1 2 3 4 5 |
Sub sample1(text1 As String) MsgBox text1 End Sub |
上のコードの引数がテキストボックスで入力された値になります。
うまく値が渡されれば、コレでテキストボックスで入力された値が表示されます。
テキストボックスの値の取得&マクロの呼び出し
今回は「テキストボックスに入力した後に、OKボタンをクリックする」という流れのユーザーフォームにします。
なので、OKボタンをクリックしたときにマクロが呼び出される”Clickイベント”にします。
ですので、ユーザーフォーム上の「OKボタン」をダブルクリックして、クリック用のSubプロシージャーを作ります。
※今回はOKボタンのオブジェクト名が「btnOk」なので、”btnOk_Click()”というプロシージャーが作成されている。
そして、下のように記述すると、ユーザーフォーム上のテキストボックスで入力された値を標準モジュールのマクロに渡すことができます。
1 2 3 4 5 6 7 8 9 10 11 |
Private Sub btnOk_Click() Dim text1 As String ' --- ユーザーフォームのテキストボックスに入力されている値を取得 text1 = UserForm1.TextBox1.Text ' --- 取得した値を標準モジュール上のマクロに渡す Call sample1(text1) End Sub |
6行目の「text1 = UserForm1.TextBox1.Text」が重要ポイントになります。
テキストボックスの値を取得するには対象での「Form名.TextBox名.Text」という記述になります。
そして、9行目で標準モジュールにあるマクロに引数として取得した値を渡しています。
上のコードを実行すると下のような結果が得られます。
ここでのコードであれば、メッセージボックスに値が表示されているので目的通りとなりました。
1位 | 2位 | 3位 |
---|---|---|
Excel VBA 脱初心者のための集中講座 | パーフェクトExcel VBA | ExcelVBA 実戦のための技術 |
初心者~中級者 | 中級者 | 初心者~中級者 |
【初心者が手に取るべき参考書】 ・「書籍+動画」で圧倒的に理解しやすい入門書になっている。 ・丁寧で詳しい解説でボリューム感がある。 | 【より深い理解をしたい方にお勧めな参考書】 ・テーマに対して丁寧な解説・適度な深さで解説されている。 ・幅広くテーマを扱っていることから、基礎知識をあらかた網羅できる。 | 【入門書と一緒に買うべき参考書】 ・1つ1つのテーマを経験豊富なエンジニア視点で解説してくれている。 ・実践的で効果的なコードの書き方が理解できる。 |
【読んでみた一言】 正直、入門書はコレ一冊でいいかも。あとは中級者用の参考書に進むべし。 | 【読んでみた一言】 深く書かれているが、少々専門的に書かれていることから、読む前に数冊の入門書を読破したほうが良い。 | 【読んでみた一言】 基礎知識を持っている人が次のレベルに達するきっかけを与えてくれる参考書である。 |
スポンサーリンク