VBA变量声明在两行上都可以,但逗号分隔时不行。编译器错误?

VBA变量声明在两行上都可以,但逗号分隔时不行。编译器错误?,vba,excel,Vba,Excel,在一个过程中,我有下面的变量声明,它工作得很好 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 据我所知,第二

在一个过程中,我有下面的变量声明,它工作得很好

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\u rng
被声明为variant/empty,这可能是导致问题的原因,但如果没有其余的代码,我无法告诉您更多

但我建议您在线使用单变量声明,它更易于阅读。或者,如果您想在单行上声明更多变量,则需要为每一行指定日期类型(如我示例中的最后一行。如果您想知道变量类型,请在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