2

次のコードでは、コンパイル時エラーが発生します。

ByRef Argument type mismatch. 

しかし、i、jの宣言を次のように変更すると:

Dim i As Integer
Dim j As Integer

エラーはなくなります。なんで?

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

9

これは、VB6でこれを行う場合:

Dim i, j As Integer

コンパイラに次のように読み取ります

Dim i As Variant, j As Integer

タイプの不一致につながります。答えは、あなたが言ったように、あなたのコードのように、タイプで両方を宣言することです:

Dim i As Integer
Dim j As Integer

または、1行で、次のようになります。

Dim i As Integer, j As Integer
于 2009-07-08T17:57:16.460 に答える
3

VB 6では、私はバリアントと見なされ、説明している場合は整数ではありません。

これが動作を説明する記事です。

于 2009-07-08T17:57:53.903 に答える