У меня есть подпрограмма с настроенной вариантной переменной, которая меняет свой тип на полпути по очевидной причине.
У меня есть переменные, объявленные в начале процедуры:
Dim acsp As Variant
Dim oldmaster As Variant
Dim acontacts As Variant
Dim avp As Variant
Dim acctst As Variant
Dim ashipto As Variant
Dim abillto As Variant
Dim found, found1, found2 As Boolean
acsp = Sheet6.UsedRange.Value2
acontacts = Sheet5.UsedRange.Value2
avp = Sheet9.UsedRange.Value2
acctst = Sheet20.UsedRange.Value2
ashipto = Sheet11.UsedRange.Value
abillto = Sheet15.UsedRange.Value
Код запускается и в зависимости от условия IF он может вызвать этот код (внутри того же подзаголовка):
c = UBound(acsp) + 1
shipto = Trim(UCase(acctst(aa, 27)))
billto = Trim(UCase(acctst(aa, 38)))
shiptofound = False
For shiptorow = 2 To UBound(ashipto)
ashipto1 = Trim(UCase(ashipto(shiptorow, 2)))
If ashipto1 = shipto Then
shiptofound = True
Exit For
End If
Next shiptorow
До строки shiptofound = False вариант abillto отображается как вариант / вариант (от 1 до 677 , От 1 до 18), что верно. Но как только он запускает строку For shiptorow = 2 To UBound (ashipto), тогда вариант abillto изменяется на вариант типа / long со значением 2? До этого кода в коде не использовалось abillto.
Почему VBA это делает?