对于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
答案 0 :(得分:2)
很简单,使用Redim vDailBuys
您已声明了一个新变量vDailBuys
,而不是您原来的vDailyBuys
调整大小。
从MSDN - Redim Statement开始:“ReDim语句用于调整已经正式声明的动态数组的大小或调整大小,”如果声明的变量没有,则它“充当声明性语句存在于模块级别或程序级别。“ (强调我的)。
请注意,同一篇文章主张仅使用Redim来重新定义数组。虽然它可以是一个声明性声明,因为它在您的情况下是无意的,它可能会导致Option Explicit
不会标记的冲突。