Compartir a través de


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 VariantMyVar 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.