1

我正在关注RubberduckVBA 的教程,并且遇到了这段代码,但不知道它的真正作用:

With New MyTestableMacro
    .Run dataServiceStub, wsServiceStub
End With

我曾尝试搜索“With 语句中的新关键字”以及其他一些内容,但没有找到任何相关信息。

这不是我在做 VBA 的一年中看到的代码......

我也尝试过用一个也不起作用MyTestableMacro的方法命名一个类。Run

为了清楚起见,我想知道是什么MyTestableMacro。它是一个类、模块、临时宏吗?它里面有 Run A 方法/函数吗?

4

1 回答 1

3

从概念上讲,这与以下代码没有什么不同:

Dim something As MyTestableMacro
Set something = New MyTestableMacro
With something
    ...
End With

请注意,我们必须Dim创建一个变量,然后使用New关键字对其进行初始化。但是我们可以通过将它们压缩到单个语句中来删除 2 额外的行:

With New MyTestableMacro
    ...
End With

关于你的另一个问题——MyTestableMacro应该是一个类模块。否则你根本做不到New。并且Run通常是一个Public方法(可以是 aSub或 a Function,给定您帖子中使用的语法)。一个Private方法是行不通的。Friend仅适用于同一个 VBA 项目,但很少看到使用Friend代替Publicor的方法Private

于 2018-04-25T09:36:13.833 回答