VBA for Excelでは、Sheets.Select
およびSheets.Activate
?
違いは柔軟性にあります。
Activate
は、指定されたシートをアクティブシートにし、単一のシートにのみ適用できます。
Select
は、オプションでextendingを許可します。指定されたシートを含めるために現在選択されているシート、例えば
Worksheets("Sheet2").Select Replace:=False
シートの配列を選択することもできます
Sheets(Array("Sheet3", "Sheet2")).Select
最小形式ではSelect
とActivate
は同じことをします。
たとえば、現在選択されているシートが1つだけの場合(Sheet3
など)、または複数のシートが選択されているが除外Sheet2
の場合、Worksheets("Sheet2").Select
およびWorksheets("Sheet2").Activate
どちらもSheet2
を唯一の選択されたアクティブなシートにします。
一方、Sheet2
とSheet3
の両方が選択され、Sheet2
がアクティブシートである場合、Worksheets("Sheet3").Activate
は両方のシートを選択したままにしてSheet3
をアクティブシートにしますが、Worksheets("Sheet2").Select
はSheet3
を作成します唯一の選択されたアクティブなシート。
.activate
は、ワークシートタブをクリックしていますか。
.select
は、コントロールの実行をシミュレートし、タブをクリックします。 VBAでは、まだシートにいません。
あなたはできる .select
複数のシート、ただし.activate
唯一。
上記を拡張するには:Replace:= Falseで以下のコードを実行すると、sheet4でワークシートの非アクティブ化イベントは発生しません。代わりにReplace:= Trueを使用すると、非アクティブ化イベントが発生します。
予期しない動作を引き起こす可能性があるため、ほとんどの状況でイベントを防止することが望ましいです。
これは、replace:= falseが使用されている場合、selectはワークシートタブをCtrlキーを押しながらクリックすることと同等であることを意味します。
サブ
Dim rng As Range
Sheet4.Select Replace:=False
Set rng = Selection
Sheet5.Select Replace:=True
Selection = rng.Value
終了サブ
違いを理解するのに役立った投稿をありがとう。
ハーヴェイ