エラー内容
VBAコンパイル時に、「メソッドまたはデータ メンバが見つかりません。」と表示される。
原因と解決方法
3つの原因と、その解決方法が考えられます。
原因1. 列挙型やユーザー定義型で、存在しないメンバーを指定
解説
列挙型(Enum)やユーザー定義型(Type)を使用する時、定義されてないメンバーを使用しているためです。
1 2 3 4 5 6 7 8 9 10 11 12 |
Enum enmKanokuNo Eigo Sansu End Enum Sub ErrSample21_01() MsgBox enmKanokuNo.Kokugo End Sub |
サンプルソースのエラーは、列挙型enmKanokuNoに定義されていないメンバーKokugoを使用しているからです。
列挙型enmKanokuNoのメンバーは、EigoとSansuだけです。
解決方法
解決方法は2つあります。
1つ目は、列挙体に存在するメンバーを指定する方法です。
1 2 3 4 5 6 7 8 9 10 11 12 |
Enum enmKanokuNo Eigo Sansu End Enum Sub ErrSample21_02() MsgBox enmKanokuNo.Eigo '←定義にあるEigoに修正 End Sub |
2つ目は、列挙体にメンバーを追加する方法です。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Enum enmKanokuNo Eigo Sansu Kokugo '←定義にKokugoを追加 End Enum Sub ErrSample21_01() MsgBox enmKanokuNo.Kokugo End Sub |
原因2. 存在しないコントロールを指定している
解説
フォーム上に存在しないコントロールを指定したためです。
「ファームデザイン時にコントロールの追加を忘れた」か、「後から間違って対象のコントロールを削除したなど」の原因が考えられます。
1 2 3 4 5 6 7 |
Sub ErrSample21_03() UserForm1.Label1.Caption = "えくとしょ" End Sub |
「デザインで見てもコントロールある!」という人は、コントロールの名前を確認してみてください。
コーディング後にコントロール名を変更すると、起こりがちなエラーです。
解決方法
フォーム上に、プログラムで指定しているコントロールを追加します。
すでにコントロールが存在する時は、コントロールの名前を確認してみてください。
原因3. 存在しないメソッドを指定している
解説
他の言語の知識もある人が、うっかりやってしまうエラーの原因です。
言語によって、処理は同じでもメソッド名が違ったり、また存在するメソッドが違うことがあります。
1 2 3 4 5 6 7 8 |
'存在しないメソッドを指定している Sub ErrSample21_04() UserForm1.Clear End Sub |
解決方法
メソッド名が違う場合は、正しいメソッド名に修正します。
メソッド自体存在しない場合は、対象部分のコードは削除し、オリジナルでコーディングし同機能を実装します。