web-dev-qa-db-ja.com

Sheets.SelectとSheets.Activateの違いは何ですか?

VBA for Excelでは、Sheets.SelectおよびSheets.Activate

14

違いは柔軟性にあります。

Activateは、指定されたシートをアクティブシートにし、単一のシートにのみ適用できます。

Selectは、オプションでextendingを許可します。指定されたシートを含めるために現在選択されているシート、例えば

Worksheets("Sheet2").Select Replace:=False

シートの配列を選択することもできます

Sheets(Array("Sheet3", "Sheet2")).Select

最小形式ではSelectActivateは同じことをします。

たとえば、現在選択されているシートが1つだけの場合(Sheet3など)、または複数のシートが選択されているが除外Sheet2の場合、Worksheets("Sheet2").SelectおよびWorksheets("Sheet2").ActivateどちらもSheet2を唯一の選択されたアクティブなシートにします。

一方、Sheet2Sheet3の両方が選択され、Sheet2がアクティブシートである場合、Worksheets("Sheet3").Activateは両方のシートを選択したままにしてSheet3をアクティブシートにしますが、Worksheets("Sheet2").SelectSheet3を作成します唯一の選択されたアクティブなシート。

27
chris neilsen

.activateは、ワークシートタブをクリックしていますか。

.selectは、コントロールの実行をシミュレートし、タブをクリックします。 VBAでは、まだシートにいません。

あなたはできる .select複数のシート、ただし.activate 唯一。

17
glh

上記を拡張するには: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

終了サブ

違いを理解するのに役立った投稿をありがとう。

ハーヴェイ

0
HarveyFrench