Я столкнулся с очень странной ошибкой в 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 получает присвоенное ему значение. Если я позволю этому выражению исполниться в реальном коде, я получу значение 0.M1Row.
Это кажется очень странным! Я не понимаю, как выполнение чего-либо в непосредственном окне может привести к присвоению значения, когда один и тот же вызов в тот же момент выполнения программы может дать значение 0, когда это нормально выполняется в коде!
Единственное, о чем я могу думать, это что-то странное, но я получаю то же поведение, если переменная, которую я назначаю, - это int, double или даже строка.
Я даже не знаю, с чего начать - помогите !!