「……えっと、このボタン、いつ押せばいいの? そもそも今の処理、終わったのかな?」
こんな経験はありませんか?
開発者が完璧に作り込んだツールであっても、利用する側にとっては「次に何をすべきか」が伝わりにくいケースは少なくありません。
その結果、操作手順の再確認や問い合わせが発生し、対応に追われてしまうこともあります。業務を効率化するために開発したツールによって、自身の作業時間が削られてしまうのは本末転倒になります。
そこで役立つのが、ユーザーフォームの「Label(ラベル)」を活用し、状況に応じたメッセージをリアルタイムで表示する手法です。
ラベルは画面上の「親切な案内看板」
VBAにおける「Label(ラベル)」とは、画面上にテキストを表示するための専用の領域を指します。
身近な例で例えるなら、スーパーで見かける「レジはこちら」といった案内看板のような役割を果たします。
初めて訪れる場所で案内看板がないと迷ってしまうように、Excelのツールでも適切な案内がないとユーザーは操作に迷ってしまいます。
「データを読み込んでいます…」や「処理が完了しました」といった進捗をラベルに明示するだけで、ユーザーの不安は一気に解消されます。
コピペで実装可能!ラベルの文字を動的に変えるコード
今回は、Excel VBAのユーザーフォームに配置した「Label1」の表示内容を、処理の状況に合わせて動的に切り替える具体的なコードをご紹介します。
' フォームを呼び出し、処理を開始するメインルーチン
Sub Main()
' 1. フォームを「モードレス」で表示(コードを止めずにフォームを表示)
UserForm1.Show vbModeless
' 2. 処理を実行
UpdateMessage
End Sub
Sub UpdateMessage()
' ラベルの更新
UserForm1.Label1.Caption = "ただいま計算中... 30秒ほどお待ちください"
' DoEventsで画面の描画を強制的に更新
DoEvents
' 30秒待機(シミュレーション)
Application.Wait Now + TimeValue("00:00:30")
' 完了メッセージの更新
UserForm1.Label1.Caption = "処理がすべて完了しました"
UserForm1.Label1.ForeColor = &HFF0000
' 完了をユーザーに認識させるための更新
DoEvents
End Sub

▼30秒後

ユーザーの心を掴む「刺さる」表示の3つのコツ
単にテキストを表示するだけでなく、以下の3つのポイントを意識することで、現場から「圧倒的に使いやすい」と評価されるツールに進化します。
- 具体的な数値を明記する: 「処理中です」という曖昧な表現よりも、「全100件中、50件の処理が完了しました」と示す方が、ユーザーに高い安心感を与えられます。
- 色彩による視覚効果を活用する:正常完了時は「青」、エラー発生時は「赤」というように色を動的に変更するだけで、直感的に状況が伝わりやすくなります。
- 少しだけユーモアを加える: 社内ツールなどカジュアルな環境であれば、「コーヒーを飲みながら少々お待ちください☕」といった一言や絵文字を添えることで、待ち時間の心理的ストレスを軽減できます。
ユーザーフォームのラベルは一見地味な機能に思えますが、実はユーザーとツールを繋ぐ最も重要な接点になります。この情報設計を磨き上げるだけで、作成するツールの価値は劇的に向上しますので、ぜひ活用してみてください!
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

コメント