我在一个运行良好的过程中有以下变量声明。
Dim table_rng As Range
Dim attachments_rng As Range
我确实有它:
Dim table_rng, attachments_rng As Range
但这导致了“编译错误:ByRef 参数类型不匹配”。
由于我有工作代码,所以我没有陷入危机,但我浪费了一个小时来寻找这个解决方案。
我将 Excel 2010 与 Visual Basic for Applications 7.0.1628 结合使用
据我所知,第二个声明在语法上是正确的。我错过了什么吗?我在网络和 stackoverflow.com 上徒劳地搜索了有关该主题的任何智慧。
提前致谢。
最佳答案
所以,请看一下 VBA 编辑器的相关内容。第一条语句似乎声明了 3 个整数,但事实并非如此。变量i
和j
是变量,只有k
是整数。
因此,如果您查看代码,table_rng
被声明为变体/空,也许这就是导致问题的原因,但如果没有代码的其余部分,我无法告诉您更多信息。
但我建议您在线使用单个变量声明,它更容易阅读。或者,如果您想在单行上声明更多变量,则需要为每个变量指定日期类型(如我示例中的最后一行。如果您想了解变量类型,请在 VBA 和 View/Locals 窗口中使用调试)。
Sub testVarDeclar()
Dim i, j, k As Integer
Dim a As Integer, b As Integer
Dim table_rng, attachments_rng As Range
Dim table_rng2 As Range, attachments_rng2 As Range
End Sub
关于VBA 变量声明可以在两行上进行,但不能用逗号分隔。编译器错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34035991/