質問

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
役に立ちましたか?

解決

それは値を渡しているので

ByValの整数にバリアントをautoconverts。 ByRefのは、あなたがサブルーチンで変更することができ、変数を渡すようにしようとしていますが。本質的には私はByRefのシナリオではXです。 VB6を使用すると、整数としてバリアントを変更することはできません。

他のヒント

あなたは、単一の行すなわちDim i, j as Integer jの上で、いくつかの変数を暗くすると

整数として薄暗く、しかし、私は変です。あなたは明示的に各変数の型を宣言する必要があります。私は、1行に1つだけの変数を含めることを好むます。

Dim i As Integer, j As Integer

または

Dim i As Integer
Dim j As Integer

これは、私が

他のプログラマのコードを継承したときに、私が学んだものです
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top