VBA ThisWorkbook |如何在Excel VBA中使用ThisWorkbook属性?

Excel VBA ThisWorkbook

VBA ThisWorkbook表示我们在其中编写excel代码的工作簿。例如,如果您在名为“ Sales 2019.xlsx”的工作簿中工作,我们通常会这样引用工作簿。

工作簿(“ Sales 2019.xlsx”)。激活

该代码将激活名为“ Sales 2019.xlsx”的工作簿。

无需像这样编写,我们只需在下面编写VBA代码即可。

ThisWorkbook.Activate’

在这里,ThisWorkbook指的是我们在其中编写代码的工作簿。通过引用这个词,我们可以执行当前工作簿中的所有任务,并避免使用全名工作簿名称的冗长代码。

我相信当您参考其他代码时,您肯定也已经看到了“ Active Workbook”一词。这也是编码中经常使用的单词之一。我们将看到基本这两个词之间的区别。

在Excel VBA中使用ThisWorkbook

参考词“ ThisWorkbook”比Workbooks对象限定符更可靠。人类的一种趋势是错误地输入了工作簿名称,这导致抛出错误消息。

VBA ThisWorkbook更加可靠的另一个重要原因是,以防万一如果我们更改工作簿名称,我们需要更改代码,因为我们使用了“ ThisWorkbook”一词。

因此,ThisWorkbook在引用我们编写代码的工作簿时更安全。

您可以在此处下载此VBA ThisWorkbook Excel模板– VBA ThisWorkbook Excel模板

范例#1

我们将看到一些示例,可以在excel VBA中使用ThisWorkbook一词。下面的代码将打印工作簿名称。

代码:

 Sub TWB_Example1()Dim WBName As String WBName = ThisWorkbook.Name MsgBox WBName End Sub 

当您手动或使用F5键运行代码时,以上代码将在VBA的消息框中显示工作簿名称。

范例#2

除了使用“ This Workbook”一词外,我们还可以使用变量来设置工作簿引用,甚至可以大大减少VBA中的代码长度。例如,首先看下面的代码。

代码:

 Sub TWB_Example2()ThisWorkbook.ActivateThisWorkbook.Worksheets(“ Sheet1”)。ActivateThisWorkbook.SaveThisWorkbook.CloseThisWorkbook.SaveAs End Sub 

上面的代码在代码的每一行中都使用了“ ThisWorkbook”。每次键入单词有多难。因此,我们可以使用变量将其最小化。

现在,看下面带有变量的代码。

代码:

 Sub TWB_Example2()Dim Wb As Workbook Set Wb = ThisWorkbook Wb.Activate Wb.Worksheets(“ Sheet1”)。Activate Wb.Save Wb.Close Wb.SaveAs End Sub 

看起来很漂亮,不是吗?

让我向你们解释代码。

首先,我将变量声明为Workbook对象。

昏暗的Wb作为工作簿

由于这是一个对象变量,因此我们需要设置对特定工作簿的引用。因此,我使用了“ ThisWorkbook”参考。

设置Wb = ThisWorkbook

现在,变量“ Wb”被引用到当前正在编写代码的工作簿中。从这里开始,在过程中,我们不需要使用单词“ ThisWorkbook”,而可以使用变量“ Wb”

Excel VBA中的活动工作簿与ThisWorkbook

正如我在文章开头所说,许多编码人员在其VBA编码中经常使用Active Workbook和ThisWorkbook一词。作为读者或新学习者,要理解这两者并不容易。因此,让我向您解释一些差异。

差异1:含义

  • 活动工作簿: Active Workbook不一定是我们目前正在编写代码的工作簿。如果您有多个打开的工作簿,并且屏幕上可见的任何工作簿都被视为 活动工作簿.
  • 本工作簿: ThisWorkbook始终是我们当前编写代码的工作簿。

差异2:错误机会

  • 活动工作簿: 在编码中使用Active可能会导致许多错误和混乱,因为除非我们在使用Active Workbook一词之前明确提到要激活的工作簿,否则我们永远都不知道哪个工作簿是活动的。
  • 本工作簿: ThisWorkbook不会出错,因为无论哪个工作簿处于活动状态,它始终会在我们编写代码的地方引用该工作簿。