Sub Sample1()
Dim Target As Worksheet
Target = ActiveSheet
Target.Name = "Sample"
End Sub
これは、よく見るエラーメッセージです。
上のコードは、オブジェクト変数Targetにアクティブシート(への参照)を格納して、シート名を"Sample"に変更しようとしていますが、オブジェクト変数に格納するときのSetステートメントがありませんのでエラーになります。正しくは次のようにします。
Sub Sample2() Dim Target As Worksheet Set Target = ActiveSheet Target.Name = "Sample" End Sub
また、そもそもオブジェクトを格納していないオブジェクト変数を操作しようとしたときにも発生します。
Sub Sample3()
Dim Target As Worksheet
Target.Name = "Sample"
End Sub
もうひとつ。次のようなケースでも発生します。
Sub Sample4()
Dim FoundCell As Variant
Set FoundCell = Cells.Find("tanaka")
FoundCell.Activate
End Sub
ワークシート上で"tanaka"という文字列を検索し、見つかったセルをアクティブにします。"tanaka"が見つかった場合は問題なく動作しますが、見つからなかったとき(検索に失敗したとき)は、変数FoundCellにはRangeオブジェクトが格納されません。Rangeオブジェクトでない変数FoundCellに対してActivateメソッドを実行しているので、Sample3と同じ理由からエラーになります。