• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAのAdvancedFilterについて with構文で囲まないとオブジェクト定義エラーになる理由)

VBAのAdvancedFilterに関するオブジェクト定義エラーの理由

このQ&Aのポイント
  • VBAのAdvancedFilterを使用する際に、with構文で囲まないとオブジェクト定義エラーが発生します。
  • 同じコードでも、with構文を使用するとエラーが発生しない理由は、with構文内のオブジェクト定義が明確になるためです。
  • AdvancedFilterを含むVBAコードでオブジェクト定義エラーが発生する場合は、with構文を使用することを検討してください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

こんばんは。 >Worksheets("職員").Range(Cells(6, 1), Cells(Wrow, 12)).AdvancedFilter Cells(6,1)とCells(Wrow,12)にシートオブジェクトが付加されてないので それがWorksheets("職員")のセルだと認識されないからです。 Worksheets("職員").Range(Worksheets("職員").Cells(6, 1), Worksheets("職員").Cells(Wrow, 12)).AdvancedFilter とCellsにシート名を付加しなければなりません。 >with end with構文で囲むとエラーとなりません。 提示のコードにはCellsの前にドットが付加されてますので これはWorksheets("職員")が付加されているのと同じになりますから エラーになりません。 Range,Cellsを使うときはそれがどのシートのものか気をつける必要があります。 で、可能な限り、シート名を付加することをお勧めします。  

yoshio2
質問者

お礼

丁寧なご教示まことにありがとうございました。 疑問が解決しました。 どのシートでオブジェクトを参照しているかによって、オブジェクトが参照される場合と参照されない場合があるため、可能なかぎりwith構文でシート名を付加する方が安全だということですね。

関連するQ&A