「ユーザーフォーム」とは
- マクロをボタンに割り当て、ボタンを押すと決められたマクロを実行する
- テキストやコードの入力補助
など、マクロを動作させるのに便利なツールです。
では、ユーザーフォームの表示方法をご説明します。
Visual Basicウインドウでユーザーフォームを作成する
ツールバーから「VBA」ウインドウを表示させます。
ユーザーフォームの挿入
VBAウインドウを開いたところです。
左の「プロジェクトウインドウ」で、「ThisWorkbook」を右クリックし、
挿入→「ユーザーフォーム」を選ぶとユーザーフォームが表示されます。
これでユーザーフォームの土台ができました。
ここにボタンなどを追加して、シートを操作できるようにしていきます。
ユーザーフォームにボタン等を追加する
「VBA」ウインドウの上部ツールバーで、表示→「ツールボックス」を選択します。
ボタンを追加する
「ツールボックス」が表示されました。
「ツールボックス」の「コマンドボタン」を押すと、ユーザーフォームにコマンドボタンが追加されます。
コマンドボタンをクリックするとマクロを実行するようにする
先ほど挿入したコマンドボタンをダブルクリックすると、新しいVBA挿入ウインドウが開きます。
このウインドウ内に、実行したいマクロを挿入します。
これで、ボタンをクリックするとマクロが動作するようになります。
ユーザーフォームをカスタマイズする
ボタンや、ユーザーフォームの名称を変更します。
ユーザーフォームの初期設定では「UserForm○」と左上に表示されています。これを変更するにはユーザーフォームをクリックし、左のプロパティ「Caption」欄で変更します。
コマンドボタンも同様に、ボタンを選択して「Caption」欄を選択して名前を変えます。
これで、ユーザーフォームのボタンでマクロを動かす準備ができました。
ユーザーフォームをExcelシートから表示させるには
ここまでユーザーフォームを作ってきましたが、エクセルのシート上では全く表示されていません。
VBAウインドウを開かないと、ユーザーフォームがあることすらわからない状態です。
そこで、ユーザーフォームをエクセルのシート上でいつでも表示できる状態にします。
ユーザーフォームの表示させる方法は主に3通りあります。
- 「VBA」ウインドウで「再生」する
- Excelシートを開いたとき、ユーザーフォームも同時に表示する
- シート上に表示ボタンを作る
順に説明します。
①「VBA」ウインドウで「再生」する方法
VBAウインドウを開き、再生ボタンを押します。
これで、シート上に作ったユーザーフォームが表示されます。
ですが、いちいちウインドウを開いて再生ボタンを押すのは面倒ですよね。
もう一つの方法がこちらです。
②Excelシートを開いたとき、ユーザーフォームも同時に表示する
エクセルを開いた瞬間にユーザーフォームも同時に開きたい&ユーザーフォームをシート上に常に表示させておくなら、この方法が便利です。
①ユーザーフォームを表示させるためのマクロを打ち込む
VBAウインドウでThisWorkbookを右クリックし、「挿入」→「標準モジュール」でマクロを挿入します。
②開いたウインドウに、以下のコードをコピペします。
Sub Auto_Open()
UserForm1.Show vbModeless
End Sub
Sub Auto_Open()
は、シートを開いたときの動作を記述するマクロです。
このマクロを保存しておくと、シートを開いたときにユーザーフォームが表示されるようになっています。
黄色マーカー部の「UserForm.1」は 先ほど作ったユーザーフォームの「オブジェクト名」を入力してください
※「Caption名」ではないので間違えないように!
vbModeless ←これを記載しておくと、ユーザーフォームを表示しながらシートを操作出来るようになります。
逆に記載しないと、ユーザーフォームが表示されている間はシートを操作できません。
次に、3つ目のやりかたをご紹介します。
③シート上に表示ボタンを作る
1つのシート上でユーザーフォームを何度も開いたり閉じたりする必要があるときに便利です。
閉じたり開いたりする必要がなくても、間違って「×」ボタンを押してしまった時の対処時などに、シート上に表示させるボタンを作っておくと楽です。
①ユーザーフォームを表示させるためのマクロを打ち込む
まずVBAウインドウでThisWorkbookを右クリックし、「挿入」→「標準モジュール」でマクロを挿入します。
②開いたウインドウに、以下のコードを挿入する。
Sub フォームを開く()
Userform1.show vbModeless
End Sub
- Userform1→先ほど作ったユーザーフォームの「オブジェクト名」を入力する
※「Caption名」ではないので間違えないように! - vbModeless→ユーザーフォームを開きながら他の作業をする際に必要なので、入れておきます
③シート上にテキストボックスを作る
Excelのシートに、ユーザーフォームを表示するためのボタンを作ります。
挿入→図から、適当な図形やテキストボックスを挿入します。
④ボタンにマクロを登録する
挿入した図形の上で右クリックし、「マクロの登録」を選択します。
先ほど作った「フォームを開く」を選んで「OK」を押します。
⑤完成
これで完成です。「フォーム」ボタンを押すとユーザーフォームが開き、ユーザーフォームを動作させることができます。
ユーザーフォームを使ったVBAの例は関連記事で紹介しています。