web-dev-qa-db-ja.com

ActiveSheet、ActiveWorkbook.ActiveSheet、およびApplication.ActiveSheetの動作はどのように異なりますか?

私はいつも次のようにActiveSheetを使用する習慣があります:ActiveWorkbook.ActiveSheet。私は最近、 このMicrosoftページActiveSheetを含まないActiveWorkbookを含むコードに遭遇しました。そのページのタイトルはApplication.ActiveSheetプロパティ。

これらの3行のコードに違いはありますか?

ActiveSheet
ActiveWorkbook.ActiveSheet
Application.ActiveSheet
3
ChrisB

これらはすべて同じものアクティブシートを参照していますが、コンテキストが期待どおりでない場合があります。 ActiveSheetは最も制限が少なく、「現在の」ワークブックが何であれ参照します。 ActiveWorkbook.ActiveSheetはそれをもう少し明確にします。これを、コードが実行されているワークブックであるThisworkbookと比較してください。 Application.ActiveSheetどちらかアクティブなワークブックまたは指定されたワークブック/ウィンドウを参照します。複数のワークブックを開いている場合は、参照しているオブジェクトについて明示することが常に最善です。

重要な注意:単独で、一部のワークブックのコードモジュールThisWorkbookに記述されている場合、ActiveSheetApplication.ActiveSheetおよびActiveWorkbook.ActiveSheet(常に同じ)の両方とは異なります。この特殊なケースでは、ActiveSheetがExcelアプリケーションのアクティブなブックでなくても、ThisWorkbookThisWorkbook.ActiveSheetを参照します。

5
Kevin