在以下代码中,我收到编译时错误,因为i
被视为变体。错误是:“ByRef Argument type mismatch。”。
但是如果我传递参数ByVal
,那么为什么没有错误?
Private Sub Command2_Click()
Dim i, j As Integer
i = 5
j = 7
Call Swap(i, j)
End Sub
Public Sub Swap(ByRef X As Integer, ByRef Y As Integer)
Dim tmp As Integer
tmp = X
X = Y
Y = tmp
End Sub
答案 0 :(得分:6)
当您在一行上调暗几个变量时,Dim i, j as Integer
j将变为整数,但我是一个变体。您需要显式声明每个变量类型。我更喜欢每行只包含一个变量。
Dim i As Integer, j As Integer
或
Dim i As Integer
Dim j As Integer
这是我在继承另一个程序员代码时学到的东西
答案 1 :(得分:3)
ByVal将变量自动转换为整数,因为它传递了一个值。而ByRef试图传递一个可以在子程序中修改的变量。本质上,我在ByRef场景中是X. VB6不允许您将变体修改为整数。