web-dev-qa-db-ja.com

変数でアクティブワークシートを宣言する方法は?

VBAで現在開いているワークシートの変数を保持しようとしています。これまでのところ

 Dim Active As Worksheet
 Set Active = ActiveWorksheet 

なんらかの理由で、最終行に「オブジェクトが必要です」というエラーが表示されます。私のコードは、アクティブシートのデータを含む新しいワークシートを開くので、現在アクティブなワークシートの自分の場所を保持する変数が必要です。なぜこれが正しく機能しないのですか?

5
unikitty94

ActiveSheetの代わりにActiveWorksheetを使用する必要があります

11
Sobigen

私はVBAでActiveSheetを使用しないことをお勧めします。トラックをさらに下っていくと、複数のワークシートを使用するコードを書き始めると、どちらがどれかを判断しようとすると混乱する可能性があるからです。私は以下を好む

dim ws as Worksheet

ws = Thisworkbook.Worksheets(1)

OR

ws = Thisworkbook.Worksheets("worksheet name")

今私がActivesheetを使用するのは、ワークシートに何が含まれているかに関係なく、ワークシートで作業するためのコードが必要なときだけです。これは非常にまれです。この場合、上記のように使用します。

dim ws as Worksheet

ws = Thisworkbook.Activesheet

OR

ws = Activesheet
4
iShaymus

私にとっては、Sheet( "Worksheet")を使用してアドレス指定したいワークシートに直接話したいです。

したがって、特定のシートから情報を取得したい場合は、これを使用できます。

Dim ExampleWorksheet as Worksheet
Dim Example as Integer

Example = Sheets("ExampleWorksheet").Cells(x,y)

したがって、アクティブまたは非アクティブなワークシートをいじる必要がなくなります。

0
Lutscha