活动工作簿/活动表何时更改?

时间:2017-06-16 06:55:27

标签: excel-vba vba excel

我对activeworkbook / activesheet属性有一些疑问,非常感谢您的帮助:

  1. 在任何情况下,最多只能有一个活动工作簿或者没有,这适用于活动工作表。是吗?

  2. 如果使用范围,单元格,...等属性在使用时未完全限定,则默认情况下它们是activeworkbook.activesheet的属性。是吗?

  3. 活动工作簿是否会通过除激活其他工作簿之外的vba操作更改为另一个工作簿?

  4. 当我使用wb.ws.range(cells(x1,y1),cells(x2,y2))时,隐含的单元格是wb.ws的单元格吗?或者他们需要合格吗?

  5. 是否可以在不激活工作簿的情况下运行存储在工作簿模块中的vba代码?

  6. 谢谢。

1 个答案:

答案 0 :(得分:1)

  

在任何情况下,最多只能有一个活动工作簿或者没有,这适用于活动表。是吗?

是。 .ActiveWorkbook返回一个Workbook对象,该对象代表活动窗口(顶部窗口)中的工作簿。

  

如果使用范围,单元格,...等属性在使用时未完全限定,则默认情况下它们是activeworkbook.activesheet的属性。是吗?

Debug.Print rng.Parent.Name '<~~ This will give you the name
  

除了激活其他工作簿之外,活动工作簿是否会通过vba操作更改为另一个工作簿?

是的,这是可能的。例如,如果您将活动工作簿发送到Back或将其最小化,那么如果zOrder中的下一个窗口是工作簿,那么该工作簿将被激活

  

当我使用wb.ws.range(cells(x1,y1),cells(x2,y2))时,隐含的单元格是wb.ws的单元格吗?或者他们需要合格吗?

只有当ws处于活动状态时,否则他们会引用Activesheet,因此完全限定对象总是好的

With ws
    Set Rng = .Range(.Cells(x1, y1), .Cells(x2, y2))
End With
  

是否可以在不激活工作簿的情况下运行存储在工作簿模块中的vba代码?

是。您可以使用Application.Run