VBA-何时指定ActiveWorkbook

VBA-何时指定ActiveWorkbook,vba,excel,Vba,Excel,在编写VBA代码时,如果您知道要在同一工作簿和某个工作表上操作,是否应该为代码中的工作簿对象指定ActiveWorkbook? 示例: ActiveWorkbook.Sheets(“Sheet1”).Range($A$1”) vs 范围(“$A$1”) 上面的代码假设您是通过本地宏(在VBA中的Sheet1对象下)在Sheet1上工作。在大多数情况下,使用工作簿比使用活动工作簿更好。是使用工作簿(“Book1”)这比激活工作簿并在引用范围时指向工作簿更具体、更健壮,我相信执行起来要快 如果在使用

在编写VBA代码时,如果您知道要在同一工作簿和某个工作表上操作,是否应该为代码中的工作簿对象指定
ActiveWorkbook
? 示例:
ActiveWorkbook.Sheets(“Sheet1”).Range($A$1”)

vs
范围(“$A$1”)


上面的代码假设您是通过本地宏(在VBA中的Sheet1对象下)在Sheet1上工作。

在大多数情况下,使用
工作簿比使用
活动工作簿更好。
是使用
工作簿(“Book1”)
这比激活工作簿并在引用范围时指向工作簿更具体、更健壮,我相信执行起来要快

如果在使用诸如
Range(“A1”)
之类的代码行时未指定最后一个活动工作簿,则VBA将默认为最后一个活动工作簿。因此,如果仅在一个工作簿中工作,则不必这样做,因为最后一个活动工作簿应始终是希望在其中执行代码的工作簿。我通常只在使用单个工作簿时指定工作表和范围,因为在没有特定工作簿指定的情况下,默认情况下excel已经选择了活动工作簿,因此告诉excel选择活动工作簿有点多余

只需确保您将从要在其中执行代码的打开工作簿中运行宏


包含工作簿名称将不会有任何伤害,它将使您的代码更加健壮。但是,如果只在一个工作簿中执行代码,则不必执行。

否-如果知道要在同一个工作簿中操作,则应使用ThisWorkbook.Sheets(“Sheet1”)来限定工作表对象。可以在非活动状态下调用宏workbook@Mukul215-您需要设置工作表对象。
我唯一习惯使用ActiveWorkbook的时间是将工作表复制到未公开的位置,从而在新的无标题工作簿中创建工作表副本。此时,ActiveWorkbook非常有必要识别新创建的工作簿/工作表,以便对其进行命名和保存。感谢大家的澄清,“Range($A$1”)”与前面的语句一样工作,这一事实表明有一个隐式对象称为它;我只是不想假设是哪一个。