在VBA for Excel中, Sheets.Select
与 Sheets.Activate
之间的区别是什么?
答案 0 :(得分:25)
不同之处在于它们的灵活性。
Activate
使指定的工作表成为活动工作表,并且只能应用于单个工作表
Select
允许扩展当前选定的工作表以包含指定的工作表,例如
Worksheets("Sheet2").Select Replace:=False
并且还允许选择工作表数组
Sheets(Array("Sheet3", "Sheet2")).Select
以最小格式Select
和Activate
执行相同操作。
例如,如果当前只选择了一个工作表(例如Sheet3
),或者如果选择了多个工作表但不包括说Sheet2
,那么{{1} }和Worksheets("Sheet2").Select
都使Worksheets("Sheet2").Activate
成为唯一选定且有效的工作表。
另一方面,如果同时选择了Sheet2
和Sheet2
并且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
结束子
感谢您的帖子,因为它帮助我了解其中的差异。
哈维