我正在尝试在VBA中保持一个变量,以表示当前打开的工作表。目前为止,我有:
Dim Active As Worksheet
Set Active = ActiveWorksheet
由于某些原因,在最后一行它给出了一个错误,说需要对象。我的代码打开了一个新的工作表,并使用当前活动工作表中的数据,所以我需要一个变量来保存我在当前活动工作表中的位置。有什么想法为什么这不正确地工作?
您需要使用 ActiveSheet
而不是 ActiveWorksheet
我更倾向于不在VBA中使用ActiveSheet,因为如果你在后面写代码时需要使用多个工作表,那么在尝试确定具体是哪一个工作表时会变得很困惑。我更喜欢以下方式:
dim ws as Worksheet
ws = Thisworkbook.Worksheets(1)
OR
ws = Thisworkbook.Worksheets("worksheet name")
我现在仅在需要处理任意工作表的代码时使用Activesheet,这种情况非常少见。如上所述,在这种情况下请使用:
dim ws as Worksheet
ws = Thisworkbook.Activesheet
OR
ws = Activesheet
Dim bradouts As Workbook
定义bradouts为工作簿
Dim bradsht As Worksheet
定义bradsht为工作表
If Right(myfile, 4) = ".xls" Then
如果myfile的后四位是“.xls”则执行以下操作
Set bradouts = Workbooks.Open(myfolder & myfile)
End If
设置bradsht = bradouts.ActiveSheet <------
箭头所指处出现错误,有人能解释一下吗……我在这里发布是因为它不允许我直接提问。
对我来说,我喜欢直接使用Sheet("Worksheet")来访问我想要的工作表。
因此,如果您想从特定的工作表中获取信息,可以使用以下方法:
Dim ExampleWorksheet as Worksheet
Dim Example as Integer
Example = Sheets("ExampleWorksheet").Cells(x,y)
这样你就不必再费心处理活动或非活动工作表了。
Application.
限定应用程序全局变量 - 如果你这样做了,智能感知就会告诉你你要找的是什么。 - Mathieu Guindon