Excel选择vs激活

问题描述 投票:23回答:6

VBA代码wb.Sheets(1).Cells.Selectwb.Sheets(1).Activate有什么区别?

excel vba excel-vba
6个回答
41
投票

select之间的区别在于您可以一次选择多个对象。选定的对象也放在Selection对象中,您可以使用方法。除非您选择多个对象,否则选择(例如,一个单元格)会激活该对象。

激活只是简单地使对象成为活动对象。想到它的最佳方式是“可以选择许多细胞,但在任何给定时间只有一个细胞可能是活跃的细胞。”

注意:它们都有一个共同点 - 它们很少需要它们通常不会做任何事情,只会减慢代码速度。您可以直接在对象上工作而无需选择或激活它,除非需要,否则最好不要使用这些对象。


8
投票

以下是MSDN的解释

你的第一个例子wb.Sheets(1).Cells.Select允许你选择多个单元格

第二张wb.Sheets(1).Activate使纸张活跃。

有很多资源可以帮助Excel VBA。

http://www.excel-vba.com/index.htm#Tutorial%20on%20Excel%20Macros

http://www.excel-vba-easy.com/

http://www.functionx.com/vbaexcel/


6
投票

第一个选择工作簿wb的第一个工作表上的所有单元格。如果工作表未激活,它将失败。

第二个只是激活工作簿的第一张wb。它不会改变该工作表上的选择或活动单元格,并且在某些情况下可能没有选定范围或活动单元格(例如,如果工作表上有一个当前选定的对象)。


1
投票

Select - “选择”细胞

Activate - “激活”一张纸(有点像说要专注于纸张)

有时你需要特别ACTIVATE表,以制作一个SELECT


1
投票

我在搜索时发现了这个问题,我有同样的问题。这是我注意到的事情:

 Sub Transfer(x As Long)
   Dim Rng, ID as Range
   Dim i, j, n As Long

 Worksheets(5).Activate
 n = Worksheets(5).Range(Range("I88"), Range("I88").End(xlToRight)).Count

Worksheets(x).Select
 Set Rng = Worksheets(3).UsedRange.Find("Element", LookIn:=xlValues).Offset(1, 1)
 Set ElemID = Range(ElemRng.Offset(0, -1), ElemRng.Offset(0, -1).End(xlDown))
 Set ElemRng = Worksheets(3).Range(ElemRng, ElemRng.End(xlToRight))
End Sub

我发现我必须将workheet.activate(或select)放入或代码会遇到:


运行时错误:'1004'应用程序定义或对象定义的错误



0
投票

Activate通常用于Sheets for Example。活动工作表将显示在屏幕上...因此,只能有一个活动工作表

虽然选择可以用于多个单元格例如。范围(A1:B3)。选择将选择激活时不可能的多个单元格

© www.soinside.com 2019 - 2024. All rights reserved.