はじめに:ただ動くだけじゃ意味がない
店舗オペレーションの自動化を進めていたとき、「自動で動かすだけじゃなく、状況に応じて人に確認してもらいたい」というケースが多々ありました。たとえば「請求金額を手入力で確認する」「処理完了時に通知する」――このような人とのやりとりを可能にする構文が、InputBoxとMsgBox、そしてエラー処理です。
🧠 ユーザー入力:InputBox
基本構文
Dim name As String
name = InputBox("お名前を入力してください")
MsgBox "こんにちは、" & name & "さん!"
- ポップアップで文字入力を促す
- 入力値は変数として保存され、あとで処理に使える
実務での使用例
店舗名や日付など、動的に変わるデータを受け取る場面で活用。
たとえば「今月の請求対象店舗名を入力 → それに応じてファイル名を変更」などが可能になります。
💬 ポップアップ通知:MsgBox
基本構文
MsgBox "処理が完了しました!"
- ユーザーへのメッセージ表示
- 処理結果、エラー、確認事項など幅広く使える
Yes/Noの分岐も可能
Dim answer As VbMsgBoxResult
answer = MsgBox("このファイルを削除してもよろしいですか?", vbYesNo)
If answer = vbYes Then
MsgBox "削除します"
Else
MsgBox "キャンセルしました"
End If
→ これで、ユーザーの選択に応じた分岐処理が可能!
🔍 エラー処理:On Errorの基本
On Error Resume Next
On Error Resume Next
Worksheets("存在しない").Delete
MsgBox "エラーがあっても次へ進みました"
- エラーが起きても処理を続ける
- 注意:バグの見落としに注意が必要
On Error GoTo ラベルによる処理
On Error GoTo エラー処理
Dim x As Integer
x = 10 / 0 ' → エラー発生
Exit Sub
エラー処理:
MsgBox "エラーが発生しました!"
→ より安全・管理されたエラー対応が可能です
小話:エラーが止まると現場が止まる
あるとき、請求書出力処理で空のシート名を参照してしまい、Excelがフリーズ。
その後、On Error
構文を用いて条件分岐と通知を組み込み、**「問題が起きても止まらず、適切なメッセージで対処できる処理」**を実装しました。現場の信頼度も向上!
✨ まとめ:VBAが“対話力”を持ったら業務が変わる
-
InputBox
で必要な情報をその場で取得 -
MsgBox
で処理状況や選択をわかりやすく通知 -
On Error
でコードが落ちても安心な回避ルートを用意
この3つは、VBAが使いやすく、人に寄り添うツールになる鍵です。
次回予告:コードを整理せよ!モジュール&プロシージャ管理術
第10回(次回)は、増えてきたコードをどう整理・管理するか?複数モジュールの使い分けや、共通処理をまとめる「プロシージャ」について詳しく解説します!