【図解】VBA(Excelマクロ)ユーザーフォームの作り方・使い方【初心者向け】

スポンサードリンク
VBA
  • VBA(Excelマクロ)でユーザーフォームを使ってみたい
  • ユーザーフォームってそもそも何なの?
  • ユーザーフォームの作り方や使い方を知っておきたい

このようなお悩みをお持ちですか?
この記事を読むことで、下記のことがわかります。

  • ユーザーフォームの概要がわかる
  • ユーザーフォームの作り方・使い方を知れる
  • ユーザーフォームを利用するためのコードを学べる

※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。

-著者情報-
名前:Utatane
VBA(マクロ)歴:3年
Excel使用歴:15年以上
ひとこと:初心者だった当時に戻った気持ちになって解説いたします

スポンサードリンク

VBA(Excelマクロ)のユーザーフォームとは?

ユーザーフォーム1
ユーザーフォーム2

ユーザーフォームとは、Excel上にポップアップする独自の入力画面です。
テキストボックスやボタンを配置し、入力内容をシートに反映させることで、入力ミスの防止や作業の効率化が可能になります。

簡単に言うと、入力する側の人をサポートする機能といったところでしょうか。
ユーザーフォームで作成できる代表的なものは以下のとおりです。

  • テキストボックス(テキストを自由入力)
  • コンボボックス(プルダウンから選択)
  • リストボックス(リストから選択/単一・複数選択切り替え可)
  • チェックボックス(複数選択可能なチェック)
  • オプションボタン(複数選択不可能なチェック)

では、ユーザーフォームの作り方・使い方を見ていきましょう。

スポンサードリンク

VBA(Excelマクロ)ユーザーフォームの作り方・使い方

今回は一番簡単な「テキストボックス」の作り方を例に挙げて、ユーザーフォームの使い方を解説いたします。

ユーザフォームの完成例

上図のように「テキストボックス」に文字を入力し、
ボタンを押すとA1セルに書き込みされるフォームを作ってみましょう。
手順は以下のとおりです。

  1. ユーザーフォームの呼び出し
  2. テキストボックスを設置
  3. コマンドボタンを設置
  4. コードの記述
  5. デザイン調整・コード追加

まずはユーザーフォームを呼び出してみましょう。

ユーザーフォームの呼び出し

VBA Project画面から始めます。
上部メニューの「挿入」→「ユーザーフォーム」をクリックします。

ユーザーフォームの呼び出し1

ユーザーフォームを呼び出すことができました。

ユーザーフォームの呼び出し2

この段階で一旦コードを表示させてみましょう。
画面左「プロジェクト – VBA Project」下の「コードの表示」をクリックしてください。

ユーザーフォームの呼び出し3

コードが表示されました。

ユーザーフォームの呼び出し4

これは実行ボタンが押された時に行いたい処理を記述します。
フォームが完成してから編集しますので、今は「×」で閉じておいてください。

テキストボックスを設置

次に、テキストボックスを設置していきましょう。
画面左下「ツールボックス」の「コントロール」から、「テキストボックス」
ユーザーフォームへドラッグ&ドロップします。

テキストボックスの配置1

テキストボックスが設置されました。

テキストボックスの配置2

コマンドボタンを設置

テキストボックスと同様に、コマンドボタンを設置しましょう。
「ツールボックス」の「コントロール」から、「コマンドボタン」
ユーザーフォームへドラッグ&ドロップします。

コマンドボタンの設置1

「コマンドボタン」が設置されました。

コマンドボタンの設置2

これでひとまずユーザーフォームのデザインは完成です。

コードの記述

ではテキストボックス・コマンドボタン・セルA1を連携させるために、コードを記述していきます。
「コードの表示」をクリックしましょう。

コードの記述1

コードが表示されたら、「Private Sub CommandButton1_Click()」というのがどこかにあるかと思います。
ここは、コマンドボタンが押された時の処理を書く場所で、今回は「テキストボックスの文字をA1セルに書き込む」という処理にします。

「Private Sub CommandButton1_Click()」の下に
「Range(“A1”).Value = TextBox1.Text」と記述してください。

コードの記述2

「TextBox1」は環境によって名前が変わる可能性があります。
テキストボックスの名前を記述してください。
テキストボックスの名前は、すぐ下にあるコード(Private Sub TextBox1_Change・・・)を確認しましょう。

完成しました。
実行ボタンを押して実行してみましょう。

実行テスト1

ユーザーフォームが表示されました。

テスト実行2

テキストボックスに文字を入力し、コマンドボタン(CommandButton)を押してみます。

テスト実行3

テキストボックスに入力した文字が無事A1セルに書き込みされました。

テスト実行4

これで完成といってもいいのですが、コマンドボタンほ表示がデフォルトのままなので変更しましょう。
なにより、入力する側の人にとっては何をしたらいいのかわからず不親切なので、説明するためのラベルも追加しましょう。

デザイン調整・コード追加

まずはコマンドボタンの表示を変更しましょう。
コマンドボタンをクリックして選択したら、もう一度クリックすると表示を変更できます。

パーツのデザイン調整1

できるだけわかりやすい表示に変更してください。

パーツのデザイン調整2

ボタンやテキストボックスなどのパーツは、位置を移動させることができます。
パーツの上下左右の四隅にカーソルを合わせると、上下左右の矢印が出る場合があります。
この時にドラッグ&ドロップすることで、位置を変更できます。

パーツのデザイン調整3

今回は下に移動させました。

パーツのデザイン調整4
パーツのデザイン調整5

上にスペースが空きましたので、ここに説明を書いていきましょう。
「ツールボックス」の「コントロール」から、「ラベル」
ユーザーフォームへドラッグ&ドロップします。

パーツのデザイン調整6
パーツのデザイン調整7

コマンドボタンの時と同様に、表示を変更させます。

パーツのデザイン調整8

表示が折り返されてしまっているので、ラベルを大きくしましょう。
ラベル右下にカーソルを合わせると、「⇔」の矢印が出る場合があります。
この時にドラッグすることで、パーツのサイズを変更できます。

パーツのデザイン調整9
パーツのデザイン調整10

最後に再度実行してみましょう。

パーツのデザイン調整11

わかりやすく変更できました。

画面左下のプロパティから、ボタンの色などを変更することもできます。

パーツのデザイン調整12
  • BackColor:ボタンの背景色
  • Font:ボタンのフォント
  • Fore Color:ボタンの文字色

その他の項目や変更のしかたについては、下記記事をご参考ください。

しかしながら、このままではコマンドボタンを押してもユーザーフォームが閉じられず、出っ放しになります。
なので、コマンドボタンを押したらユーザーフォームを閉じるコードを追加しましょう。

Unload UserForm1

上記VBAコードがユーザーフォームを閉じる記述です。
下記のように、コマンドボタンを押したら実行される処理の最後に記述しましょう。

Private Sub CommandButton1_Click()
    Range("A1").Value = TextBox1.Text
    Unload UserForm1
End Sub

繰り返しになりますが、「TextBox1」は各自テキストボックスの名前に応じて変更してください。

以上がテキストボックス・コマンドラベルを用いたユーザーフォームの作り方です。

データ保存さえしていれば、Excelを閉じた後でも再開できます。
画面左の「UserForm1」をダブルクリックしてください。

ユーザーフォームを再開1
ユーザーフォームを再開2

ユーザーフォームが表示されたら再開が可能です。

スポンサードリンク

最後に

VBA(Excelマクロ)のユーザーフォームについて解説いたしました。

当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。

最後までお読みいただき、ありがとうございました。がんばってください!

タイトルとURLをコピーしました