0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

📘 第9回:人と対話するVBA!InputBox・MsgBox・エラー処理の使い方

Last updated at Posted at 2025-07-16

はじめに:ただ動くだけじゃ意味がない

店舗オペレーションの自動化を進めていたとき、「自動で動かすだけじゃなく、状況に応じて人に確認してもらいたい」というケースが多々ありました。たとえば「請求金額を手入力で確認する」「処理完了時に通知する」――このような人とのやりとりを可能にする構文が、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回(次回)は、増えてきたコードをどう整理・管理するか?複数モジュールの使い分けや、共通処理をまとめる「プロシージャ」について詳しく解説します!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?