1

在以下代码中,我收到编译时错误,因为i它被视为变体。错误是:“ByRef 参数类型不匹配。”。

但是如果我传递参数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
4

2 回答 2

6

当您在单行上调暗多个变量时,即Dim i, j as Integerj 调暗为整数,但 i 是一个变体。您需要显式声明每个变量类型。我更喜欢每行只包含一个变量。

Dim i As Integer, j As Integer

或者

Dim i As Integer
Dim j As Integer

这是我在继承另一个程序员的代码时学到的

于 2009-07-08T20:39:58.800 回答
3

ByVal 将变量自动转换为整数,因为它正在传递一个值。当 ByRef 试图传递一个您可以在子例程中修改的变量时。本质上,我是 ByRef 场景中的 X。VB6 不允许您将变量修改为整数。

于 2009-07-08T18:22:02.277 回答