Visual Basic 6.0 Passing by reference problem
pass-by-reference, vb6
Solution
This is because when you do this in VB6:
Dim i, j As Integer
It reads to the compiler as
Dim i As Variant, j As Integer
Leading to your type mismatch. The answer is, as you said, to declare both with types, either as in your code:
Dim i As Integer
Dim j As Integer
Or on a single line, a la:
Dim i As Integer, j As Integer
Problem
In the following code, I get a compile time error: ``` ByRef Argument type mismatch. ``` But if I change the declaration of i,j to : ``` Dim i As Integer Dim j As Integer ``` The error goes away. Why? ``` 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 ```