エラー内容
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で準備されているプロシージャとは違う名前にした方がいいです。