Sheets.Select在 VBA for Excel 中,和有什么区别Sheets.Activate?
3 回答
不同之处在于它们的灵活性。
Activate使指定的工作表成为活动工作表,并且只能应用于单个工作表
Select允许选择性地扩展当前选定的工作表以包括指定的工作表,例如
Worksheets("Sheet2").Select Replace:=False
并且还允许选择一组工作表
Sheets(Array("Sheet3", "Sheet2")).Select
以他们的最小形式Select做Activate同样的事情。
例如,如果当前仅选择了一张工作表(例如Sheet3),或者如果选择了多张工作表但不包括say 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
结束子
感谢您的帖子,因为它帮助我理解了差异。
哈维