Option Explicit没有看到一个未声明的变量,但适用于其他变量

时间:2018-05-17 03:58:22

标签: vba excel-vba excel

对于Debug.Print行,一切正常,意味着Option Explicit捕获错误并显示有关未定义变量的弹出窗口。

但是,如果删除我添加的Debug.Print行以查看Option Explicit是否正常工作,则代码会成功执行。编译也是成功的。它不应该是,因为有一个拼写错误," vDailBuys"而不是" vDailyBuys"在第二ReDim陈述中。

为什么没有检测到这个错字?

我使用第二个ReDim清除数组内容,确定是否是推荐方式,但它就像魅力一样。

Option Explicit
Option Base 1

Sub test()

    Dim vDailyBuys() As Variant

    ReDim vDailyBuys(1, 10)
    ReDim vDailBuys(1, UBound(vDailyBuys, 2)) As Variant
    Debug.Print abcde

End Sub

1 个答案:

答案 0 :(得分:2)

很简单,使用Redim vDailBuys您已声明了一个新变量vDailBuys,而不是您原来的vDailyBuys调整大小。

MSDN - Redim Statement开始:“ReDim语句用于调整已经正式声明的动态数组的大小或调整大小,”如果声明的变量没有,则它“充当声明性语句存在于模块级别或程序级别。“ (强调我的)。

请注意,同一篇文章主张仅使用Redim来重新定义数组。虽然它可以是一个声明性声明,因为它在您的情况下是无意的,它可能会导致Option Explicit不会标记的冲突。