エラー内容
VBA実行時に、実行時エラー5「プロシージャの呼び出し、または引数が不正です。」と表示される。
原因と解決方法
1つの原因と、その解決方法が考えられます。
原因1. 関数の引数が範囲外
解説
関数の引数には、「数値」という条件以外に「0以上」など範囲が決まっている引数もあります。
その決まった範囲外の値を引数で指定すると、このエラーが発生します。
サンプルソースでは、Left関数の第2引数にマイナスを指定しているのが原因です。
Left関数の第2引数は、「左から何文字切り取るか」を指定するので、0以上の数値しか指定できません。
1 2 3 4 5 |
Sub errRuntime5() MsgBox Left("えくとしょエラー記事", -1) End Sub |
解決方法
引数の値を、正しい範囲に修正します。
Left関数の場合は、第2引数を0以上の値に修正します。
1 2 3 4 5 |
Sub errRuntime5() MsgBox Left("えくとしょエラー記事", 5) End Sub |
今回は直打ちの数値だから簡単にバグを発見できますが、変数の値や、計算結果を引数に使用している時などは、発見しにくいです。
まとめ
よく使う関数で、引数に範囲条件があるものを紹介します。
関数 | 引数の条件 |
---|---|
Left関数 | 第2引数Length:0以上 |
Right関数 | 第2引数Length:0以上 |
Mid関数 | 第2引数Start:1以上 第3引数Length:0以上 |
DateAdd関数 | 第1引数Interval:日付の単位を表す文字のみ (「日付を表す文字一覧」を参照) |
DateDiff関数 | 第1引数Interval:日付の単位を表す文字のみ (「日付を表す文字一覧」を参照) |
日付を表す文字一覧
yyyy | 年 |
q | 四半期 |
m | 月 |
y | 年間通算日 |
d | 日 |
w | 週日 |
ww | 週 |
h | 時 |
n | 分 |
s | 秒 |