如何将一个活动工作表声明为变量?

6

我正在尝试在VBA中保持一个变量,以表示当前打开的工作表。目前为止,我有:

 Dim Active As Worksheet
 Set Active = ActiveWorksheet 

由于某些原因,在最后一行它给出了一个错误,说需要对象。我的代码打开了一个新的工作表,并使用当前活动工作表中的数据,所以我需要一个变量来保存我在当前活动工作表中的位置。有什么想法为什么这不正确地工作?


2
一个好习惯是使用 Application. 限定应用程序全局变量 - 如果你这样做了,智能感知就会告诉你你要找的是什么。 - Mathieu Guindon
4个回答

11

您需要使用 ActiveSheet 而不是 ActiveWorksheet


4

我更倾向于不在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

0

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 <------

箭头所指处出现错误,有人能解释一下吗……我在这里发布是因为它不允许我直接提问。


这并没有真正回答问题。如果您有不同的问题,可以通过点击提问来提出。如果您想在此问题获得新的答案时得到通知,您可以关注此问题。一旦您拥有足够的声望,您还可以添加悬赏以吸引更多关注。- 来自审核 - the Tin Man

0

对我来说,我喜欢直接使用Sheet("Worksheet")来访问我想要的工作表。

因此,如果您想从特定的工作表中获取信息,可以使用以下方法:

Dim ExampleWorksheet as Worksheet
Dim Example as Integer

Example = Sheets("ExampleWorksheet").Cells(x,y)

这样你就不必再费心处理活动或非活动工作表了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接