【发布时间】:2019-06-29 19:00:58
【问题描述】:
我在 VBA 中遇到了一个非常奇怪的错误,想知道是否有人可以解释一下?
我正在调用这样的工作表函数:
Dim lMyRow As Long
lMyRow = WorksheetFunction.Match(vItemID, rngMyRange.Columns(1), 0)
这是为了获取我传入的项目的行。在某些情况下(虽然我无法确定确切的时间),对 Match 函数的调用会发生奇怪的事情。
如果我在即时窗口中执行该行,我会得到以下信息:
lMyRow = WorksheetFunction.Match(vItemID, rngMyRange.Columns(1), 0)
?lMyRow
10
即查找有效,并且 lMyRow 获得分配给它的值。如果我让该语句在实际代码中执行,我 lMyRow 的值为 0。
这看起来很奇怪!我不明白如何在即时窗口中执行某些操作可以成功分配一个值,其中相同的调用,在程序执行的同一点可以在代码中正常运行时给出 0 的值!
我唯一能想到的是这是一些奇怪的转换,但如果我分配的变量是 int、double 甚至是 string,我会得到相同的行为。
我什至不知道从哪里开始 - 帮助!
【问题讨论】: