エラー内容
VBAコンパイル時に、「参照が不正または不完全です。」と表示される。
原因と解決方法
3つの原因と解決方法が考えられます。
原因1. オブジェクトの指定がない
解説
オブジェクト(セルやシート)の指定がなくて、「何について処理をしたい」かわからないことが原因です。
主語や目的語がわからないと思えばいいよ。
カンマは日本語の「~の」と読みかえればわかりやすいかな。
1 2 3 4 5 6 7 |
Sub ErrSample16_01() .Value = "えくとしょ" End Sub |
サンプルソースだと何に文字列「えくとしょ」をセットすればいいかわかりません。
解決方法
ピリオドの前か、Withブロックでオブジェクトを指定します。
どちらのサンプルも、セルA1の値に、文字列”えくとしょ”をセットします
1 2 3 4 5 6 7 |
Sub ErrSample16_02() Range("A1").Value = "えくとしょ" End Sub |
1 2 3 4 5 6 7 8 9 |
Sub ErrSample16_03() With Range("A1") .Value = "えくとしょ" End With End Sub |
原因2. Withブロックの外に書いている
解説
Withブロックの外で、ピリオドを入力しているのが原因です。
プログラム修正や、追記した時にまちがってWithの外に書いてしまいます。
1 2 3 4 5 6 7 8 9 10 11 |
Sub ErrSample16_04() With Range("A1") End With .Value = "えくとしょ" End Sub |
解決方法
Withブロックの中に、対象コードを移動します。
1 2 3 4 5 6 7 8 9 |
Sub ErrSample16_05() With Range("A1") .Value = "えくとしょ" End With End Sub |
原因3. 不要なピリオドが先頭にある
解説
不必要なピリオドが、識別子の先頭にあるのが原因です。
1 2 3 4 5 6 7 |
Sub ErrSample16_06() .Range("A1").Value = "えくとしょ" End Sub |
解決方法
まちがって入力したピリオドを削除します。
1 2 3 4 5 6 7 |
Sub ErrSample16_07() Range("A1").Value = "えくとしょ" End Sub |