我有一个传递给函数的Variant参数,这个参数本质上是一个Integer:
Function Foo(vNum As Variant) As Long
vNum = 50000
当我使用:
调用此函数时Dim A As Integer
A = 2000
Foo(A)
我收到溢出错误(6)。
当我传递小于32767(整数的上限)的数字时,这似乎与vNum被“归类”为整数变量有关,当尝试分配大于32767的数字时会导致溢出。
我的问题是,如何将此“整数”变体转换或转换为可接受Longs的变体?
我尝试了点击:vNum = CLng(50000)
和vNum = CVar(50000)
,
并使用虚拟变量:
Function Foo(vNum As Variant) As Long
Dim vTest As Variant
vTest = 50000
vNum = vTest
所有这些仍然会产生溢出错误(6)。
非常感谢任何帮助,谢谢!
答案 0 :(得分:0)
如果您只是将vNum设置为Long,那么就不会遇到这个问题 然后它可以包含一个2,147,483,648的数字
Function Foo(vNum As Long) As Long
'do stuff
End Function
答案 1 :(得分:0)
我认为你应该像这样定义你的函数:
Function Foo(ByVal vNum As Variant) As Long
如果未指定ByVal,则参数将传递给ByRef,并且您对参数所做的任何操作都是在“原始”变量上进行的,因此是整数。