【Excel】VBAのMsgBoxとInputBoxでユーザーに確認・入力を求める方法

【Excel】VBAのMsgBoxとInputBoxでユーザーに確認・入力を求める方法
🛡️ 超解決

業務でExcelVBAを使う際、ユーザーからの確認や数値入力が必要な場面があります。

VBAのMsgBox関数はメッセージ表示と選択肢提示に、InputBox関数はユーザーからのデータ入力に利用できます。

この記事では、これら二つの機能の基本的な使い方から応用までを解説します。

ユーザーとの対話をスムーズにするVBAコードの書き方が理解できます。

【要点】VBAでユーザーと対話する基本

  • MsgBox関数: メッセージを表示しユーザーからの選択肢を取得します。
  • InputBox関数: ユーザーから文字列や数値の入力を促します。
  • セキュリティ警告対処: マクロ有効ブックで保存しトラストセンター設定で安全に実行します。

ADVERTISEMENT

VBAでユーザーと対話する基本機能の概要

VBAのMsgBox関数とInputBox関数は、プログラムの実行中にユーザーからの情報取得や確認を求めるための重要な機能です。

MsgBox関数はメッセージを表示し、OKやキャンセルなどのボタン選択を促します。これにより、処理の続行や中止をユーザーに判断してもらえます。

InputBox関数は小さな入力ボックスを表示し、ユーザーが文字や数値を入力できるようになります。この入力値を変数に格納し、後続の処理に利用できます。

これらの機能を使うには、開発タブからVBAエディターを開く必要があります。また、マクロを含むブックはファイル形式を「Excelマクロ有効ブック」として保存する点が前提です。

お探しの解決策が見つからない場合は、こちらの「Excelトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

MsgBox関数でメッセージ表示と選択肢取得を行う手順

MsgBox関数はVBAでメッセージを表示し、ユーザーに情報や選択肢を提示するために使います。戻り値を利用してユーザーの選択を判定できます。

  1. VBAエディターを開く
    AltキーとF11キーを同時に押してVBAエディターを起動します。
  2. 標準モジュールを挿入する
    メニューバーの「挿入」から「標準モジュール」を選択します。新しいモジュールがプロジェクトエクスプローラーに表示されます。
  3. MsgBoxのコードを入力する
    モジュールウィンドウに以下のコードを入力します。
    Sub SampleMsgBox()
    Dim result As VbMsgBoxResult
    result = MsgBox("処理を続行しますか?", vbYesNo + vbQuestion, "確認")
    If result = vbYes Then
    MsgBox "はいが選択されました。", vbInformation, "結果"
    Else
    MsgBox "いいえが選択されました。", vbInformation, "結果"
    End If
    End Sub
  4. コードを実行する
    VBAエディターのツールバーにある「実行」ボタン、またはF5キーを押してコードを実行します。メッセージボックスが表示されます。
  5. 結果を確認する
    表示されたメッセージボックスで「はい」または「いいえ」を選択すると、その選択に応じた次のメッセージが表示されます。

InputBox関数でユーザーからデータ入力を受け付ける手順

InputBox関数はユーザーからの文字列や数値入力を受け付け、その値を変数に格納して後続の処理に活用します。

  1. VBAエディターを開く
    AltキーとF11キーを同時に押してVBAエディターを起動します。
  2. 新しい標準モジュールを挿入する
    既存のモジュールでも構いませんが、別の例として「挿入」から「標準モジュール」を選びます。
  3. InputBoxのコードを入力する
    モジュールウィンドウに以下のコードを入力します。
    Sub SampleInputBox()
    Dim userName As String
    Dim userAge As Variant
    userName = InputBox("お名前を入力してください。", "氏名入力", "名無し")
    If userName <> "" Then
    MsgBox "こんにちは、" & userName & "さん!", vbInformation, "挨拶"
    Else
    MsgBox "名前が入力されませんでした。", vbExclamation, "警告"
    End If
    userAge = InputBox("年齢を入力してください。", "年齢入力", 30)
    If IsNumeric(userAge) And userAge <> "" Then
    MsgBox "あなたの年齢は" & userAge & "歳ですね。", vbInformation, "年齢確認"
    Else
    MsgBox "有効な年齢が入力されませんでした。", vbExclamation, "警告"
    End If
    End Sub
  4. コードを実行する
    VBAエディターのツールバーにある「実行」ボタン、またはF5キーを押してコードを実行します。入力ボックスが表示されます。
  5. データ入力と確認
    表示された入力ボックスに名前と年齢を入力し、OKボタンを押します。入力した値に応じたメッセージが表示されます。

ADVERTISEMENT

VBAのセキュリティ警告と対処方法

VBAを含むファイルを開く際、セキュリティ警告が表示されることがあります。これは悪意のあるマクロからPCを保護するためのExcelの機能です。

マクロが無効になる場合の対処

マクロを含むExcelブックは、ファイル形式を「Excelマクロ有効ブック (.xlsm)」として保存してください。通常の「Excelブック (.xlsx)」ではマクロが削除されます。

ブックを開く際に「セキュリティの警告 マクロが無効にされました。」と表示された場合、メッセージバーの「コンテンツの有効化」ボタンをクリックします。これにより、そのセッション中はマクロが実行可能になります。

常にマクロを有効にする設定

信頼できるソースからのマクロを頻繁に利用する場合、信頼できる場所を設定できます。

  1. オプションを開く
    Excelの「ファイル」タブから「オプション」を選択します。
  2. トラストセンター設定へ進む
    左側のメニューで「トラストセンター」を選び、「トラストセンターの設定」ボタンをクリックします。
  3. 信頼できる場所を追加する
    左側のメニューで「信頼できる場所」を選び、「新しい場所の追加」ボタンをクリックします。
  4. パスを設定する
    マクロを含むファイルを保存するフォルダのパスを入力し、「この場所のサブフォルダーも信頼する」にチェックを入れて「OK」をクリックします。
  5. 設定を保存する
    すべてのダイアログで「OK」をクリックして設定を保存します。これにより、指定したフォルダ内のマクロは警告なしで実行されます。

この設定はセキュリティリスクを伴うため、信頼できるフォルダのみ指定してください。

VBA Projectがロックされる場合

まれにVBAプロジェクトがパスワード保護され、編集できない場合があります。これは意図的に保護されているか、ファイルが破損している可能性が考えられます。

保護されている場合は作成者に確認してください。ファイル破損の場合はバックアップからの復元を検討します。

MsgBox関数とInputBox関数の機能比較

項目 MsgBox関数 InputBox関数
主な用途 メッセージ表示、処理の確認、選択肢の提示 ユーザーからの値の入力
ユーザーからの入力形式 ボタン選択(OK、キャンセル、はい、いいえなど) テキスト、数値、日付など、自由なテキスト入力
戻り値 選択されたボタンの値(定数) 入力された文字列(キャンセル時は空文字)
カスタマイズ性 表示アイコン、ボタンの種類をVBA定数で指定可能 初期値の指定のみ可能

MsgBox関数とInputBox関数を使うことで、VBAコードにユーザーとの対話機能を組み込めます。

これにより、処理の確認や必要なデータの入力をユーザーに求める柔軟な自動化が可能になります。

マクロ有効ブックの適切な保存と、必要に応じたトラストセンター設定を行うことで、安全にこれらの機能を活用できます。

今日学んだMsgBoxとInputBoxを活用し、よりインタラクティブなExcel業務自動化を進めてください。

📊
Excelトラブル完全解決データベースこの記事以外にも、様々なエラー解決策をまとめています。困った時の逆引きに活用してください。

ADVERTISEMENT

この記事の監修者
📈

超解決 Excel・Word研究班

企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。

🏆
超解決 Excel検定 あなたのExcel実務能力を3分で測定!【1級・2級・3級】