はじめに

「修飾子が不正です。」というエラーはあまり見かけないので対処のしかたに困惑してしまいます。そもそも修飾子とは何なのでしょう。実際にエラーを出してみて検証してみましょう。
実例で検証

上記のコードで「修飾子が不正です。」というエラーが発生します。
よく見ると、shの所がマークされているのがわかります。
このプログラムでは、shという変数がString(文字列)型なのが原因です。正しくはワークシート型でないと2行目のコードは成り立ちません。
エラーの原因はわかりましたが、エラーメッセージは何を示しているのでしょう。
この場合、修飾子とは、Rangeの親であるワークシートオブジェクトの事を指しています。つまり、Rangeの修飾子である、sh がワークシートオブジェクトでないので、不正だということです。
尚、修飾子とはオブジェクトなどを指しているわけでなく、「アクセス修飾子」と言った場合は「public」や「private」などの事を指します。
あまり見かけない理由

そもそも sh がワークシートオブジェクトであることを間違えたらなら、上記のように2行目に sh にワークシートオブジェクトの代入を行うはずです。
このコードでは、「オブジェクトが必要です。」と出てきて、sh がオブジェクトではないという事が明確に解ります。
「修飾子が不正です。」というエラーは変数名のスペルミスや、変数名の重複などが原因で発生する事もあります。このような状況ではエラーの特定はしずらいでしょう。
チェックポイントとしては以下のような点に注目してみましょう。
・変数名をスペルミス(変数名を再確認する)
・変数名の重複ミス(変数名を変更してみる)
・変数型の選択ミス(変数型が正しいか確認する)
コメント