本記事には広告(PR)が含まれます。
くわしくは プライバシーポリシー をご確認ください。
Excelのユーザーフォームを使って、入力補助やデータ確認をしている方も多いのではないでしょうか。
でも「毎回ボタンを押してフォームを開くのが面倒…」「他の作業をしているとフォームが後ろに隠れてしまう…」なんて思ったこと、ありませんか?
そんなときに便利なのが、ユーザーフォームを“常に表示”させる設定です。
ブックを開いた瞬間にフォームが自動で立ち上がったり、シート操作中でもフォームが前面に固定されたままになったりすると、作業がぐっと快適になります。
この記事では、
-
ブックを開いたときに自動でユーザーフォームを表示する方法
-
Excel操作中もフォームを常に最前面に表示しておく方法
の2つを中心に、初心者でもすぐ試せるサンプルコード付きでわかりやすく紹介します。
「フォームをもっと便利に使いたい!」という方は、ぜひ最後まで読んでみてくださいね。
ユーザーフォームを自動で表示する方法
Excelでは通常、ボタンをクリックしてユーザーフォームを開くことが多いですよね。
でも、毎回その操作を行うのは少し面倒です。
特に他の人にも使ってもらうブックでは、開いた瞬間にフォームが自動で表示される仕組みにしておくと、とても便利です。
ここでは、VBAの「Workbook_Open」イベントを使って、Excelブックを開いたときにフォームを自動で表示する方法を紹介します。
Workbook_Openイベントを使ってフォームを起動する
まずは基本の手順です。
Excelを開いたときに自動でフォームを立ち上げるには、以下のコードを「ThisWorkbook」モジュールに記述します。
Private Sub Workbook_Open()
UserForm1.Show
End Sub
手順は次の通りです。
-
Alt + F11 キーでVBA画面(VBE)を開く
-
左側の「ThisWorkbook」をダブルクリック
-
上のコードを貼り付けて保存
-
Excelブックを一度閉じて、再度開いてみる

コードは「ThisWorkbook」モジュールに記述します。標準モジュールやフォームに書いても自動では実行されないので注意しましょう。
これで、ブックを開いた瞬間にユーザーフォームが自動で表示されます。
特別なボタンを押す必要がないので、社内共有用のブックなどにもおすすめです。
フォームを「モードレス」で表示して操作を続ける
上記の方法でフォームを表示すると、デフォルトでは“モーダル表示”になります。
つまり、フォームを閉じないとシートを操作できない状態です。
もし「フォームを出したまま、セルの操作もしたい」という場合は、モードレス表示を使いましょう。
コードの最後に「vbModeless」を追加するだけでOKです。
Private Sub Workbook_Open()
UserForm1.Show vbModeless
End Sub
この設定にすると、フォームを表示したままでもシート上の操作が可能になります。
入力支援ツールや確認用パネルのように、横に出しっぱなしで使いたいフォームにぴったりです。

補足
「モーダル」と「モードレス」の違いをまとめると以下の通りです:
| 表示モード | 特徴 | 操作の自由度 |
|---|---|---|
| モーダル | フォームを閉じるまで他の操作ができない | 低い |
| モードレス | フォームを開いたまま他の操作が可能 | 高い |
フォームを閉じたあと再表示させたい場合
もし誤ってフォームを閉じてしまったときに、再表示したい場合は簡単な再表示ボタンを用意しておくと安心です。
たとえば、以下のようなマクロを標準モジュールに用意しておくと便利です。
このマクロをボタンやショートカットに割り当てておけば、いつでもフォームを再表示できます。
また、Application.OnTimeを使って定期的にフォームをチェックし、閉じられていたら再表示する…といった応用も可能です。

マクロボタンについて詳しくは以下の記事をご参考ください。
ブックを非表示にしてフォームだけ表示する(応用)
もし「ユーザーにExcelシートを直接触ってほしくない」「フォームからのみ入力してほしい」という場合は、
ブックを非表示にしてフォームだけ表示する方法もあります。
以下のコードを「ThisWorkbook」に記述します。
Private Sub Workbook_Open()
Application.Visible = False 'Excel本体を非表示にする
UserForm1.Show
End Sub

これで、Excelブックを開いた瞬間にフォームだけが表示された状態になります。
シートは見えないので、ユーザーはフォーム経由でのみ操作できます。
フォームを閉じた際にExcelを再表示するには、フォーム側に次のコードを追加します。
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Application.Visible = True 'Excelを再表示
End Sub

これで、フォームを閉じると自動的にExcel画面が戻るようになります。
誤操作防止やレイアウト保護を目的とした社内ツールなどで重宝します。
「Excel本体を非表示にする」コード(
Application.Visible = False)を使うときは、必ず**フォーム側にも再表示用のコード(
Application.Visible = True)**をセットで記述しましょう。片方だけだと、Excel画面が見えなくなったまま戻せなくなる場合があります。
また、この設定を行うと他のExcelブックも同時に非表示になります。
複数のファイルを並行して使う場合には、この方法は避けたほうが良いでしょう。
ここまでで、「ブックを開いたときに自動でユーザーフォームを表示する」方法と、
さらに一歩進んだ「フォームのみ表示」までを学べました。
次の章では、フォームを常に最前面に固定して、他のウィンドウに隠れないようにする方法を紹介します。
フォームを常に最前面に表示する方法(応用)
ここまでで、Excelを開いたときにユーザーフォームを自動で表示する方法を紹介しました。
ただし、フォームを表示したまま別のウィンドウを操作していると、フォームが他の画面の裏に隠れてしまうことがあります。
そんなときに役立つのが、「フォームを常に最前面に固定する」設定です。
たとえば、作業手順や入力項目を確認しながら作業する場面でとても便利です。
Windows APIを使って最前面に固定する
Excel VBAだけでは「ウィンドウを最前面に固定する」機能は用意されていません。
そこで、Windowsの仕組みを利用してフォームを常に前面に表示させる方法を紹介します。
これを実現するのが、**Windows API(SetWindowPos関数)**です。
以下のコードを使うと、ユーザーフォームを他のウィンドウよりも常に最前面に固定できます。
標準モジュール(Module1)に記述

この宣言部は、**「標準モジュール(Module1)」**に記述します。
これで、他のフォームやモジュールからAPI関数を呼び出せるようになります。
ユーザーフォームのコードに記述
次に、常に表示させたいユーザーフォームに以下のコードを記述します。

これで、フォームが他のウィンドウの後ろに隠れることなく、
常に最前面に表示されるようになります。
Excel上での操作中や他のアプリを開いたときも、フォームを見失うことがありません。

ポイント
環境によっては、起動直後に他のウィンドウが一瞬前面に出ることがあります。
その場合は、フォームの表示前に DoEvents を挟むことで安定します。
サンプルコードでは、以下の5~7行目が該当します。
実行結果と使い方のコツ
この設定を行うと、たとえば以下のような使い方ができます。
-
入力補助フォームを常に画面右側に表示しながら作業
-
作業指示やチェックリストを常に見える位置に固定
-
作業マニュアル風にメッセージを出しておく
見た目の印象としては、「Excelの上に小さな常駐ウィンドウが浮いているような状態」になります。
フォームの位置やサイズを整えると、作業画面を邪魔せず使いやすくできます。
最前面固定の注意点
便利な機能ですが、使い方には少し注意が必要です。
-
他のアプリ操作時にも前面に残るため、人によっては作業の邪魔になることがあります。
-
WindowsのバージョンやExcelの32bit/64bit環境によっては、動作に差が出ることもあります。
-
チーム共有のブックでは、環境の違いによるトラブルを避けるために、最前面固定を使わず
vbModelessで十分な場合もあります。
そのため、実際に利用する環境で動作確認を行い、必要に応じて調整するようにしましょう。
まとめ:用途に応じて使い分けよう
ユーザーフォームを常に表示させたい場合、目的に合わせて次のように使い分けるのがおすすめです。
| 目的 | 方法 | 特徴 |
|---|---|---|
| Excelを開いた瞬間にフォームを表示 | Workbook_Openイベント |
自動表示に便利 |
| シートを操作しながらフォームを出しておく | UserForm1.Show vbModeless |
通常作業と併用可能 |
| 他の画面に隠れず常に前面表示したい | Windows API(SetWindowPos) | 高度な設定・注意が必要 |
まずは「自動表示+モードレス」で試してみて、
必要に応じて「最前面固定(API)」を追加する流れがおすすめです。
【関連記事】
- Excelマクロで印刷する方法まとめ|ボタン作成・連続印刷・設定の基本と応用を紹介
- Excelマクロボタンが反応しない?原因と対処法まとめ
- 【Excel VBA】イベントでエラーが出るときの原因と対処法まとめ|SelectionChangeとChangeの違いも解説
※外部リンク※
- ユーザー フォームを作成する |Microsoft Learn
- Show メソッド |Microsoft Learn
- Workbook.Open イベント (Excel) |Microsoft Learn
※参考書籍 (PR)※
※本ボックスにはアフィリエイトリンク(PR)が含まれます。
くわしくは プライバシーポリシー へ。
