Pregunta

En el siguiente código, me sale un error de tiempo de compilación porque i se trata como una variante. El error es:. "ByRef Argumento de coincidencia de tipo"

Pero si paso el ByVal parámetros, no hay error por qué?

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
¿Fue útil?

Solución

ByVal autoconverts la variante en un número entero, ya que está pasando a un valor. Mientras que el ByRef está tratando de pasar una variable que se puede modificar en las subrutinas. En esencia I es X en el escenario ByRef. VB6 no permite modificar una variante como un número entero.

Otros consejos

Cuando DIM varias variables en una sola línea, es decir Dim i, j as Integer j está atenuado como un entero, pero es una variante. Es necesario que declaren cada tipo de variable de forma explícita. Yo prefiero incluir solamente una sola variable por línea.

Dim i As Integer, j As Integer

o

Dim i As Integer
Dim j As Integer

Esto es algo que aprendí cuando heredé el código de otro programador

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top