Error de coincidencia de tipo de argumento ByRef
Un argumento pasó ByRef (por referencia), el predeterminado, debe tener el tipo de datos previsto en el procedimiento. Este error tiene la siguiente causa y solución:
Ha pasado un argumento de un tipo no se podría convertir al tipo previsto.
Por ejemplo, este error se produce si trata de pasar una variable Integer cuando se espera Long. Si desea que se produzca la conversión, incluso aunque se pierda información, puede pasar el argumento en su propio conjunto de paréntesis.
Por ejemplo, para pasar el argumento Variant
MyVar
a un procedimiento que espera un argumento Integer, puede escribir la llamada de la siguiente manera:Dim MyVar MyVar = 3.1415 Call SomeSub((MyVar)) Sub SomeSub (MyNum As Integer) MyNum = MyNum + MyNum End Sub
La colocación del argumento en su propio conjunto de paréntesis fuerza la evaluación del mismo como una expresión. Durante esta evaluación, se redondea (no se trunca) la parte fraccional del número para que sea conforme al tipo de argumento previsto. El resultado de la evaluación se coloca en una ubicación temporal y el procedimiento recibe una referencia a la ubicación temporal. De esa manera el original
MyVar
conserva su valor.Nota:
Si no especifica un tipo para una variable, la variable recibe el tipo predeterminado, Variant. Esto no siempre es evidente. Por ejemplo, el siguiente código declara dos variables: la primera,
MyVar
, es un tipo de datos Variant; la segunda,AnotherVar
, es un tipo de datos Integer.Dim MyVar, AnotherVar As Integer
Para más información, seleccione el elemento en cuestión y presione F1 (en Windows) o AYUDA (en Macintosh).
Soporte técnico y comentarios
¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.