Sheets.Select和Sheets.Activate有什么区别?

在VBA for Excel中, Sheets.SelectSheets.Activate什么Sheets.Activate

区别在于它们的灵活性。

Activate使指定的工作表成为活动工作表,并且只能应用于单个工作表

Select允许可选地扩展当前选定的工作表以包括指定的工作表,例如

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

也可以select一系列的纸张

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

在他们最小的formsSelectActivate做同样的事情。

例如,如果当前只select了一个工作表(如Sheet3 ),或者select了多个Worksheets("Sheet2").Select ,但不包括 Sheet2 ,则selectWorksheets("Sheet2").Select Worksheets("Sheet2").Activate选定和活动工作表。

另一方面,如果同时selectSheet2Sheet3并且Sheet2是活动工作表,那么Worksheets("Sheet3").Activate Sheet3选中的两个工作表,并使Sheet3成为活动工作表,而Worksheets("Sheet2").Select Sheet3是唯一选中的活动工作表。

.activate是您单击工作表选项卡上。

.select模拟你做一个控件,然后点击选项卡。 在VBA中,你还没有在工作表中。

您可以.select多个工作表,但仅.select一个工作表。

展开上面的内容:使用Replace:= False运行下面的代码时,sheet4上不会发生工作表停用事件。 如果使用Replace:= True,则取消激活事件将触发。

在大多数情况下,预防事件是可取的,因为它可能会导致意外的行为。

这意味着select只是CTRL +的等价物。单击工作表选项卡IF replace:= false被使用。

sub a

 Dim rng As Range Sheet4.Select Replace:=False Set rng = Selection Sheet5.Select Replace:=True Selection = rng.Value 

结束小组

感谢您的post,因为这有助于我理解其中的差异。

哈维