Excel VBA の実行時エラー辞典

実行時エラー '449':引数はオプションではないか、プロパティの割り当てが無効です

呼び出した関数・プロシージャ・メソッドの必須の引数を、省略していないか確認します。

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

よくある原因

直し方

  1. 停止した行で呼び出している関数・プロシージャ名を確認し、定義や資料で必須の引数を数えます。
  2. 必須の引数をすべて渡します。自作のプロシージャで省略を許す場合は、定義側の引数に Optional と既定値を付けます。
  3. Object 型で受けている変数は、可能なら Worksheet・Range など具体的な型で宣言し、コンパイル時に確認できるようにします。

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

税率を省略できるようにした例です。この例は実行前にコンパイル エラーとして表示される場合があります。端数の切り捨ては説明用で、実際の計算規則に合わせてください。

修正前

Function TaxIncluded(price As Long, rate As Double) As Long
    TaxIncluded = Int(price * (1 + rate))
End Function

Sub ShowPrice()
    Debug.Print TaxIncluded(1000)
End Sub

修正後

Function TaxIncluded(price As Long, Optional rate As Double = 0.1) As Long
    TaxIncluded = Int(price * (1 + rate))
End Function

Sub ShowPrice()
    Debug.Print TaxIncluded(1000)
    Debug.Print TaxIncluded(1000, 0.08)
End Sub

調べ方

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

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

関連エラー

確認した公式資料