エラー内容
VBAコンパイル時に、「修正候補: 識別子」と表示される。
原因と解決方法
識別子とは、変数や定数、関数の名前のことです。
VBAでは名前を付けるルールがあり、このルールに反した名前を付けようとするとこのエラーが発生します。
3つの原因と解決方法が考えられます。
原因1. 名前の先頭が数字や記号
解説
識別子(変数や定数、関数の名前)の先頭には、数字や記号(_や*)は使えません。
1 2 3 4 5 6 7 |
Sub ErrSample13_01() Dim 7itemName as String End Sub |
解決方法
名前の先頭を、アルファベットか日本語(ひらがな、カタカナ、漢字)に修正します。
プログラムの見やすさ、コーディングのしやすさを考えると、アルファベットのローマ字表記がオススメです。
日本語だとタイピングがメンドクサイ・・・
それに予約語は英語なので、ローマ字表記なら同じ名前にならないです!
1 2 3 4 5 6 7 |
Sub ErrSample13_01() Dim itemName As String End Sub |
原因2. 名前がVBAの予約語
解説
予約語とは、VBAにあらかじめ準備(定義)されているステートメントや関数の名前のことです。
この予約語と同じ名前をつけようとするとエラーになります。
予約語はIfやFor、Dateなどたくさんあります。
1 2 3 4 5 6 7 |
Sub ErrSample13_02() Dim date As String End Sub |
解決方法
予約語と違う名前に変更します。
1 2 3 4 5 6 7 |
Sub ErrSample13_02() Dim wkDate As String End Sub |
原因3. コーディング途中で改行
解説
SubやFunctionのみ入力して、コードが半端な状態で改行(Enterキー)すると発生します。
1 2 3 |
Sub |
解決方法
1行に必要なコードを書いてから、改行しましょう。
SubやFunctionの場合は、名前や引数、戻り値の定義をしてから改行すればOKです。
1 2 3 4 5 |
Sub PrintList() End Sub |
まとめ
参考までに、「VBAの名前をつける時のおもなルール」を紹介します。
- 名前の先頭は、アルファベットか日本語(ひらがな、カタカナ、漢字)
先頭に数字や記号(_や*)は使えません - 予約語(VBAに準備されている関数やステートメントの名前)と同じ名前はダメ
- 変数名の長さは半角255文字まで