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

时间:2013-04-10 07:22:53

标签: excel excel-vba spreadsheet vba

在VBA for Excel中, Sheets.Select Sheets.Activate 之间的区别是什么?

3 个答案:

答案 0 :(得分:25)

不同之处在于它们的灵活性。

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

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

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

并且还允许选择工作表数组

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

以最小格式SelectActivate执行相同操作。

例如,如果当前只选择了一个工作表(例如Sheet3),或者如果选择了多个工作表但不包括Sheet2,那么{{1} }和Worksheets("Sheet2").Select都使Worksheets("Sheet2").Activate成为唯一选定且有效的工作表。

另一方面,如果同时选择了Sheet2Sheet2并且Sheet3是活动工作表,则Sheet2会将两个工作表都选中并生成{{1}有效工作表,而Worksheets("Sheet3").Activate使Sheet3成为唯一选定且有效的工作表。

答案 1 :(得分:14)

.activate您是否点击了工作表标签。

.select模拟您执行控件并单击选项卡。在VBA中,你还不在表单中。

您可以.select多张,但.activate只有一张。

答案 2 :(得分:0)

要扩展上述内容:当使用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

结束子

感谢您的帖子,因为它帮助我了解其中的差异。

哈维