Sub または Function が定義されていません。


Callステートメントで呼び出そうとしたプロシージャが、存在しないときに発生します。プロシージャ名の打ち間違いや、別モジュールにあるプロシージャを呼び出そうとしたけど、その呼び出されるプロシージャがPrivateだったようなケースです。

プロシージャを呼び出そうとして「そのプロシージャ名は分からない」とエラーになるのでしたら、エラーの原因を理解しやすいのですが、下図のように、単純なタイプミスが原因で、このエラーが起こる場合もあります。

RangaではなくRangeです・・・

CellssではなくCellsです・・・

これは、RangaやCellssのように、プロパティ名が間違っているのですが、VBAはここで「○○(~)」を「○○という名前のプロシージャを呼び出している」と誤認します。そして「Rangaなんて名前のプロシージャは見あたらないっス」というエラーになります。同じ打ち間違いでも、「○○(~)」がプロシージャの呼び出しと誤認されないようなケースもあります。次のコードはプロパティ名を間違えていますが、別のエラーになります。

Sub Sample()
    ActiveSheet.Ranga("A1") = 100
End Sub

同じ「○○(~)」ですが、その前にActiveSheetがありますので「Ranga("A1")」は、別プロシージャの呼び出しではなく、プロパティの指定と認識されます。プロパティ・・・つってもRangaなんてプロパティはありませんから「そんな名前のプロパティはないっスけど、何か?」というエラーになります。