ThisWorkbook、ActiveWorkbook、ActiveSheetはあるのですが、ThisWorksheetはありません。
実際には、標準モジュールでコーディングする場合は、Activesheetで必要な処理ができてしまいます。
以下のコードを実行すると、ActiveSheetの中身を確認できます。
どうしてもThisWorksheetと書きたい場合や、他のシートをアクティブにするVBAの場合はSetステートメントでThisWorksheetにActiveSheetを保存しておきます。
次のサンプルでは、別のシートをアクティブにした場合の結果を示します。
Sub testActiveSheet
Set ThisWorksheet = ActiveSheet
Msgbox "ActiveSheet is " & ActiveSheet.Name
Msgbox "ThisWorksheet is " & ThisWorksheet.Name
ActiveSheet.Next.Activate
Msgbox "ActiveSheet is " & ActiveSheet.Name
Msgbox "ThisWorksheet is " & ThisWorksheet.Name
End Sub
シートにコードを書く場合は、Meキーワードを使うこともできます。Meキーワードはコードが実行されているモジュールそのものを示しているので、以下のコードをSheet2から呼び出した場合でもMe.NameはSheet1のままです(コードがSheet1に書いてあるとすれば)。
なお、Meキーワードはクラスモジュールでしか使えないので、標準モジュールで使うとエラーとなります。
Sub testMe
Set ThisWorksheet = ActiveSheet
Msgbox "ActiveSheet is " & ActiveSheet.Name
Msgbox "ThisWorksheet is " & ThisWorksheet.Name
Msgbox "Me is " & Me.Name
ActiveSheet.Next.Activate
Msgbox "ActiveSheet is " & ActiveSheet.Name
Msgbox "ThisWorksheet is " & ThisWorksheet.Name
Msgbox "Me is " & Me.Name
End Sub