VBA代码wb.Sheets(1).Cells.Select
和wb.Sheets(1).Activate
有什么区别?
select之间的区别在于您可以一次选择多个对象。选定的对象也放在Selection对象中,您可以使用方法。除非您选择多个对象,否则选择(例如,一个单元格)会激活该对象。
激活只是简单地使对象成为活动对象。想到它的最佳方式是“可以选择许多细胞,但在任何给定时间只有一个细胞可能是活跃的细胞。”
注意:它们都有一个共同点 - 它们很少需要它们通常不会做任何事情,只会减慢代码速度。您可以直接在对象上工作而无需选择或激活它,除非需要,否则最好不要使用这些对象。
以下是MSDN的解释
你的第一个例子wb.Sheets(1).Cells.Select
允许你选择多个单元格
第二张wb.Sheets(1).Activate
使纸张活跃。
有很多资源可以帮助Excel VBA。
http://www.excel-vba.com/index.htm#Tutorial%20on%20Excel%20Macros
第一个选择工作簿wb的第一个工作表上的所有单元格。如果工作表未激活,它将失败。
第二个只是激活工作簿的第一张wb。它不会改变该工作表上的选择或活动单元格,并且在某些情况下可能没有选定范围或活动单元格(例如,如果工作表上有一个当前选定的对象)。
Select
- “选择”细胞
Activate
- “激活”一张纸(有点像说要专注于纸张)
有时你需要特别ACTIVATE
表,以制作一个SELECT
我在搜索时发现了这个问题,我有同样的问题。这是我注意到的事情:
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'应用程序定义或对象定义的错误
Activate通常用于Sheets for Example。活动工作表将显示在屏幕上...因此,只能有一个活动工作表
虽然选择可以用于多个单元格例如。范围(A1:B3)。选择将选择激活时不可能的多个单元格