15

Sheets.Select在 VBA for Excel 中,和有什么区别Sheets.Activate

4

3 回答 3

29

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

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

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

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

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

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

以他们的最小形式SelectActivate同样的事情。

例如,如果当前仅选择了一张工作表(例如Sheet3),或者如果选择了多张工作表但不包括say Sheet2,则Worksheets("Sheet2").Select两者Worksheets("Sheet2").Activate都将Sheet2成为唯一选定的活动工作表。

另一方面,如果说两者Sheet2Sheet3都被选中并且Sheet2是活动工作表,则Worksheets("Sheet3").Activate让两个工作表都被选中并成为Sheet3活动工作表,Worksheets("Sheet2").Select而使Sheet3唯一的选定工作表成为活动工作表。

于 2013-04-10T08:05:19.977 回答
17

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

.select模拟您进行控制并单击选项卡。在 VBA 中,您还没有在工作表中。

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

于 2013-04-10T07:59:23.247 回答
1

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

结束子

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

哈维

于 2015-01-03T16:43:42.427 回答