GASで「ReferenceError: MsgBox is not defined」エラーが発生する原因と解決策

最終更新日: 2026-08-27

💡 このエラーを含む【Google Apps Script (GAS)エラー完全攻略ハンドブック】をnoteで公開中 →

30秒でわかる原因と解決策

原因: Excel VBAなどで使用される MsgBox 関数を、JavaScript(Google Apps Script)の環境でそのまま呼び出そうとしたため、「未定義の関数(ReferenceError)」としてエラーになっています。 解決策: GASでポップアップメッセージを表示したい場合は、Browser.msgBox("メッセージ") または SpreadsheetApp.getUi().alert("メッセージ") に書き換えてください。

修正コード(Before / After)

❌ エラーが発生するコード

function showAlert() {
  // VBAの書き方をそのまま流用するとエラーになる
  MsgBox("処理が完了しました。");
}

⭕ 修正後の推奨コード

function showAlert() {
  // GASの標準的なポップアップ表示方法(シンプルUI)
  Browser.msgBox("処理が完了しました。");
  
  // または、より高機能なUIダイアログを使用する場合(スプレッドシート連携)
  // var ui = SpreadsheetApp.getUi();
  // ui.alert("処理が完了しました。");
}

よくある発生パターンと解説

1. Excel VBAからの移行時によく起きるミス

Google Apps Script (GAS) はJavaScriptをベースにした言語です。そのため、VBAの組み込み関数である MsgBoxInputBox(大文字・小文字の区別や構文の違い含む)はそのままでは動作しません。

2. GASにおけるダイアログ表示の選択肢

GASでユーザーにメッセージを通知・確認したい場合、主に以下の2つの方法があります。

よくある質問 (FAQ)

Q1: Browser.msgBox で「Yes」「No」のボタンを出し、ユーザーの選択によって処理を分岐させることはできますか?

A: はい、可能です。以下のように記述することで、ユーザーが押したボタンの判定ができます。

function confirmAction() {
  var ui = Browser.msgBox("確認", "処理を実行しますか?", Browser.Buttons.YES_NO);
  
  if (ui == "yes") {
    // 「はい」が押された場合の処理
    Browser.msgBox("実行しました。");
  } else {
    // 「いいえ」が押された場合の処理
    Browser.msgBox("キャンセルしました。");
  }
}

Q2: MsgBox 以外のVBA関数(例: CellsRange の記述など)でも同様のエラーになりますか?

A: はい、VBA固有の構文や関数はGASでは基本的にそのまま動きません。GAS固有のAPI(SpreadsheetAppLogger など)に書き換える必要があります。

💡 このエラーを含む【Google Apps Script (GAS)エラー完全攻略ハンドブック】をnoteで公開中 →