【Excel VBA】ユーザーフォームを使って入力画面を作る方法

VBAのユーザーフォームを使うと、Excelでシステムのような画面を表示することが可能です。本記事では、サンプルとして以下のようなウィンドウを作っていきます。

VBAでユーザーフォームを表示する

まずは、プロジェクトにユーザーフォームを追加します。

UserForm1を追加する

【VBAProjectを右クリック】→ 【挿入】 → 【ユーザーフォーム】をクリックします。

すると、VBAProjectにフォーム/UserForm1が追加されて、以下のようにUserForm1という画面が表示されます。

そもそもこの画面なに?という方は、以下の記事でVBAを書き始める準備の方法をまとめているのでご覧ください。

Excel VBA マクロの作り方【Excel VBA】Excelマクロの始め方 ~簡単なサンプル付き~

ユーザーフォームを表示する

画面上部の【▶】を押してしてください。

すると、以下のようなユーザーフォームが表示されます。

今はユーザーフォームを追加しただけなのでまっさらなユーザーフォームが表示されていますが、ここにテキストボックスやボタンなどを追加することが可能です!

ユーザーフォームにコントロールを追加する

まっさらなユーザーフォームに、テキストボックスやボタンなどのコントロール追加していきましょう。

ツールボックスを表示

ユーザーフォームにコントロールを追加するために、まずはツールボックスを表示させます(初めから表示されている場合もあります)。

トップメニューの【表示】→【ツールボックス】をクリックすると、ツールボックスが表示されます。

ボタンを追加

①ツールボックスのコマンドボタンをクリックします。そのあとに、②ユーザーフォームの上でクリックすると、ボタンが追加されます。

ラベルとテキストボックスを追加

①ツールボックスのラベルをクリックします。そのあとに、②ユーザーフォームの上でクリックすると、ラベルが追加されます。同じことをテキストボックスでも繰り返します。

コントロールを置いただけですが、ここで画面上部の【▶】を押してみましょう。

コントロールが追加されたユーザーフォームが表示されましたね。しかし、まっさらではなくなったものの、このままでは使い物になりませんね。そこで、次の章で画面の見た目をよくしていきます。

メモ
これと同じ要領で、ラジオボタン、チェックボックスなどのコントロールを追加することが可能です。

コントロールの一覧を確認したい方は以下のサイトを参考にしてください。

参考 ツールボックスOfficeディベロッパーセンター

ユーザーフォームのプロパティを設定する

各コントロールにはプロパティが用意されており、プロパティを変更することでコントロールの大きさや表示される文字を変更することが可能です。

プロパティウィンドウ

プロパティの変更はプロパティウィンドウから行います。プロパティを変更したいコントロールをクリックして選択すると、プロパティウィンドウに表示されます。

例えば、下の図ではユーザーフォームをクリックしているので、プロパティウィンドウ(左側)にはユーザーフォームのプロパティが表示されています。

コントロールの大きさを変更(Height、Width)

コントロールの大きさを変更するプロパティはHeightとWidthになります。これらの値を変更することでコントロールの大きさを変えることができます。

その他、コントロールを選択し四角をドラッグアンドドロップすることでも大きさ(HeightとWidth)を変えることが可能です。

表示される文字を変更(Caption)

ウィンドウ上に表示される文字を変更するには、Captionプロパティを変更します。プロパティウィンドウでCaptionプロパティの右側のテキストをそのまま変更します。

本記事では、ユーザーフォーム、ラベル、コマンドボタンのCaptionを変更しています。

メモ
なお、テキストボックスにはCaptionプロパティはありません。テキストボックス内に文字を表示する際にはTextプロパティを使用します。

ユーザーフォームからマクロを呼び出す

ここまで作るとだいぶそれっぽいウィンドウになってきましたね。ただこれだけだと表示されるだけで何も処理を行ってくれません。

そこで最後に、ボタンを押したときにマクロが実行されるようにしていきます。

ボタンをダブルクリックしてイベントメソッドを追加

コマンドボタンにカーソルを合わせてダブルクリックしましょう。

すると、ソースコードが表示され、以下のようなソースコードが追加されます。

ここで追加されるメソッドはボタンをクリックしたときに実行されるソースコードになります。そのため、ボタンをクリックしたときに何か処理をしたい場合には、このメソッドの中に処理を書きます。

ボタンをクリックしたときの処理

せっかくテキストボックスを追加したので、テキストボックスに入力されている文字をメッセージボックスで表示してみます。以下のソースコードを、Private Sub CommandButton1_Click()  と End Sub の間に書きます。

copy

MsgBox ("名前は" + TextBox1.Text + "です!")
メモ
TextBox1というのはテキストボックスのオブジェクト名になります。TextBox1.Textでテキストボックスに書いてある文字を取得しています。

このようにオブジェクト名 + “.“+ プロパティ名でオブジェクトに設定されている値を取得したり、変更したりすることが可能です。

書いた後の画面はこんな感じです。

ボタンを押してマクロを実行する

それでは、ボタンを押してマクロを実行してみましょう!

プロジェクトのUserForm1をダブルクリックして以下の画面にしたあとに、画面上部の【▶】を押してしてください。

ユーザーフォームが表示されたら、テキストボックスに名前を入力し、ボタンをクリックしてください。

メッセージボックスにメッセージが表示されたら完了です!

ユーザーフォームを学ぶのにおすすめな本

ユーザーフォームを作れるようになると、Excelで出来ることがぐっと広がります。この機会にぜひ覚えてみてください!

なお、もっとユーザーフォームについて学びたいという方は、以下の本がおすすめです。

VBAのユーザーフォームを使った内容に特化しており、本を読み進めることで売上管理システムを作れるようになります。