Я параметр Variant передается функции, и этот параметр является по существу Integer:Преобразование параметра Variant (Integer) для Variant (Long)
Function Foo(vNum As Variant) As Long
vNum = 50000
Когда я вызываю эту функцию с помощью:
Dim A As Integer
A = 2000
Foo(A)
Я получаю ошибку переполнения (6).
Это, похоже, связано с тем, что vNum является «классифицированным» как целочисленный вариант, когда я передаю число меньше 32767 (верхний предел целых чисел), что затем вызывает переполнение при попытке присвоить число больше 32767 .
Мой вопрос, как я бросаю или преобразовать это «Integer» Variant в один, который будет принимать Лонгс?
Я попробовал литье: vNum = CLng(50000)
и vNum = CVar(50000)
,
и использование фиктивных переменных:
Function Foo(vNum As Variant) As Long
Dim vTest As Variant
vTest = 50000
vNum = vTest
Все они по-прежнему генерируется сообщение об ошибке, связанной с переполнением (6).
Поблагодарили бы за любую помощь!
Вы уверены, что используете 'vb.net'? _ Тип данных Variant не поддерживается в Visual Basic .NET_ – Fabio
Кажется, что это vba, а не vb.net ... извините, я очень новичок в vba – ehicks