2011-08-24 51 views
22

VBA代码wb.Sheets(1).Cells.Selectwb.Sheets(1).Activate之间的区别是什么?Excel Select与激活

+0

富答案为一个简单的问题:) – niko

回答

35

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

激活只是简单地使对象成为活动对象。 最好的想法是“可以选择多个单元,但在任何给定时间只有一个单元可能是活动单元”。

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

+1

+1,因为“可以选择多个单元格,但在任何给定时间只有一个单元格可能是活动单元格。” –

+0

@Issun +1尼斯回答 – niko

+1

+1最后的笔记。 – Zenadix

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/

+0

wb.Sheets(1).Activate使*表*活动:活动单元格和该表上的选择不会改变,甚至可能没有在该表单上的活动单元格。 –

+0

我不好,我打错了,我纠正了。 – Taryn

6

第一选择工作簿WB的第一片材​​上的所有细胞。如果工作表未处于活动状态,则会失败。

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

+0

“它会改变选择” - >“它不会改变选择”。 +1 –

+0

@ J-F:谢谢 - 修正了我的回答 –

1

Select - “选择”小区(一个或多个)

Activate - “激活”的片材(有点像说集中在片材上)

偶尔要特别ACTIVATE片材中,为了制作一个SELECT

0

激活通常用于表格示例。 活动工作表将显示在屏幕上...因此,只能有一个活动工作表

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

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 

我发现我HAD把工作表。激活(或选择)中或代码将碰上:


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