VBAで現在開いているワークシートの変数を保持しようとしています。これまでのところ
Dim Active As Worksheet
Set Active = ActiveWorksheet
なんらかの理由で、最終行に「オブジェクトが必要です」というエラーが表示されます。私のコードは、アクティブシートのデータを含む新しいワークシートを開くので、現在アクティブなワークシートの自分の場所を保持する変数が必要です。なぜこれが正しく機能しないのですか?
ActiveSheet
の代わりにActiveWorksheet
を使用する必要があります
私は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
私にとっては、Sheet( "Worksheet")を使用してアドレス指定したいワークシートに直接話したいです。
したがって、特定のシートから情報を取得したい場合は、これを使用できます。
Dim ExampleWorksheet as Worksheet
Dim Example as Integer
Example = Sheets("ExampleWorksheet").Cells(x,y)
したがって、アクティブまたは非アクティブなワークシートをいじる必要がなくなります。