Excel VBA の実行時エラー辞典

実行時エラー '450':引数の数が一致していません。または無効なプロパティを指定しています

呼び出しで渡した引数の数が定義と合っているか、読み取り専用のプロパティに代入していないか確認します。

見出しは Microsoft Learn の一覧表のメッセージです。個別解説の見出しは「引数の数が正しくありません」です。同じ問題が、実行前のコンパイル エラーとして表示されることもあります。

よくある原因

直し方

  1. 停止した行の呼び出しとプロシージャの定義を並べ、引数の数と順番を照合します。
  2. 定義を変更した場合は、Ctrl+F でそのプロシージャ名を検索し、すべての呼び出しを直します。
  3. プロパティへの代入で止まる場合は、資料やオブジェクトブラウザーで読み取り専用でないか確認します。自作クラスなら Property Let を定義するか、代入をやめます。

元のブックや入力ファイルを残し、コピーで試してください。以下は一つの原因を扱う例です。Sub 全体を示していないコードは、練習用の Sub の中に記述します。

ログの種類を表す引数を追加した例です。この例は実行前にコンパイル エラーとして表示される場合があります。

修正前

Sub WriteLog(message As String)
    Debug.Print Format(Now, "yyyy-mm-dd hh:nn"), message
End Sub

Sub Main()
    WriteLog "開始", "INFO"
End Sub

修正後

Sub WriteLog(message As String, Optional level As String = "INFO")
    Debug.Print Format(Now, "yyyy-mm-dd hh:nn"), level, message
End Sub

Sub Main()
    WriteLog "開始", "INFO"
    WriteLog "終了"
End Sub

調べ方

  1. エラー画面の「デバッグ」が使える場合は押し、黄色で止まった行とメッセージ全文を記録します。Windows では Alt+F11 で VBE を開けます。
  2. 停止行の少し前を選び、F9 でブレークポイントを設定します。再実行して止めたら、F8 で一行ずつ進めます。
  3. 呼び出し先の名前の上で Shift+F2 を押して定義へ移動し、引数の数を確認します。
  4. Ctrl+G でイミディエイトウィンドウを開き、下の式を入力して Enter を押します。例の変数があるプロシージャ内で停止し、変数名は自分のコードに合わせてください。
WriteLog "テスト"

Err の情報はエラーが起きた直後に確認します。修正後は、正常な入力と問題が起きた入力の両方で結果を照合してください。

関連エラー

確認した公式資料