【VBAリファレンス|実務向け】ユーザーフォーム入門 – 住所入力フォームを作成する(9) ~ 起動処理|Excel VBA

スポンサーリンク

導入

これまで作成してきた「住所入力フォーム」も、いよいよ仕上げの段階です。どんなに優れたフォームを作成しても、ユーザーが簡単に起動できなければ意味がありません。今回は、ブックを開いた時に自動でフォームを表示する方法と、作業中にいつでも呼び出せるようボタンを設置する方法を解説します。この仕組みを整えることで、実務で「使いやすいツール」として運用できるようになります。

基礎知識

VBAでユーザーフォームを表示するには、Showメソッドを使用します。このメソッドには「モーダル」と「モードレス」という2つの表示形式があります。

モーダル (vbModal): フォームを閉じないと、Excel本体(シートの編集など)を操作できません。設定ミスを防ぎたい入力専用画面に向いています。
モードレス (vbModeless): フォームを開いたまま、Excelのシートを操作できます。データを参照しながらフォームに入力するような、実務で非常に便利な表示形式です。

今回は、住所録を見ながら効率的に作業できるよう「モードレス」で表示する方法を採用します。

実装/解決策

起動処理には大きく分けて「自動起動」と「ボタン起動」の2パターンがあります。

1. 自動起動: ブックを開いた瞬間にフォームを出すには、ThisWorkbookモジュール内の「Workbook_Open」イベントを使用します。
2. ボタン起動: フォームを閉じた後、再度呼び出すためにワークシート上に「ボタン」を配置します。ボタンには標準モジュールに記述したプロシージャを割り当てます。

サンプルプログラム

1. ブック起動時に自動表示(ThisWorkbookモジュールに記述)
ブックを開いた時に、フォームをモードレスで表示します。

Private Sub Workbook_Open()
‘ myFormは作成したユーザーフォームの名前と仮定しています
‘ vbModelessを指定することで、表示中もシート操作が可能になります
myForm.Show vbModeless
End Sub

2. ボタンクリックで起動(標準モジュールに記述)
標準モジュールを新規作成し、以下のコードを記述します。

Sub ShowUserForm()
‘ フォームをモードレスで表示する汎用プロシージャ
myForm.Show vbModeless
End Sub

※この「ShowUserForm」を、エクセルの「開発」タブ>「挿入」>「フォームコントロール」で作成したボタンに「マクロの登録」で割り当ててください。

応用・注意点

・モーダルプロパティの直接設定:
コードで「vbModeless」と書かなくても、VBEのプロパティウィンドウでフォームの「ShowModal」プロパティを「False」に変更しておけば、Showメソッドを引数なしで呼ぶだけでモードレス表示になります。状況に応じて使い分けてください。

・ボタン配置のコツ:
住所録を管理するシートの先頭や、操作用のメニューシートを作成し、そこにボタンを配置するのが実務上の定石です。誤ってボタンを消さないよう、ボタンを「配置」した後はシートの保護を行い、ボタン以外の操作のみを許可する設定にしておくと、運用トラブルが激減します。

これで住所入力フォームは完成です。ぜひ、現場の業務効率化に役立ててください。

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