「引数の数が一致していません。または不正なプロパティを指定しています。」の原因・解決方法

エラー内容

VBAコンパイル時に、「引数の数が一致していません。または不正なプロパティを指定しています。」と表示される。

原因と解決方法

2つの原因と、その解決方法が考えられます。

原因1. 引数の数が多すぎる

解説

プロシージャの引数が多すぎるのが原因です。

 

解決方法

プロシージャの引数を調べて、修正しましょう。

プロシージャの引数の調べ方は、次の3つです。

1.ネットやヘルプ
Yahoo知恵袋、個人サイト、公式サイトなど。

2.自動クイックヒント
(プロシージャ入力後、スペースキーを押下すると表示されます)

3.オブジェクトブラウザ
(コード上で対象のプロシージャを選択状態にし、右クリック→「定義」をクリックすると表示されます)

 

Mid関数の場合は、Mid(String, Start As Long, [Length])が正しい書式なので、引数は3つです。

Mid関数は、文字列の指定したスタート位置から、指定した文字数の文字列を抜き出します。

引数の定義はつぎのようになります。
String:対象の文字列
Start:スタート位置
Length:取り出す文字数

 

原因2. 引数が異なる同名プロシージャを定義

解説

VBAで準備されているプロシージャと同じ名前のプロシージャを作成していることが原因です。

サンプルソースでは、VBAのLeft関数を呼び出したかったのに、自作したLeft関数があるため、そちらを呼び出していることになっています。

なので、自作Left関数の引数と数があっていないのでエラーとなっています。

 

Left関数を呼び出している箇所MsgBox Left(“あいうえお”, 3)だけを見ていると、このエラー原因に気づけないんですよね・・・

パッと見た時、VBAのLeft関数だったら引数が正しいんで。

 

 

解決方法

VBAで準備されているプロシージャを使用したい場合は、頭にVBA.をつければ使用できます。

ただ、エラーの元になるので特に理由がない限り、自作するプロシージャは、VBAで準備されているプロシージャとは違う名前にした方がいいです。

 

関連記事

VBAエラー原因・解決方法
仕事や趣味で、成果を出す5つのポイント
VBAエラー原因・解決方法
えくとしょ | 初心者のためのエクセルとVBAの図書館
タイトルとURLをコピーしました