Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Una Variant solo puede aceptar la asignación de datos con una función VarType válida. Causas y soluciones de este error:
Ha tratado de pasar una matriz de cadenas de tamaño fijo. Cuando se asigna una cadena de tamaño fijo a una Variant, se fuerza como cadena de tamaño variable, aunque no se puede forzar para una matriz de cadenas de tamaño fijo.
Si pasa la matriz, use un bucle para asignar los elementos individuales de la matriz a los elementos de la matriz temporal de cadenas de tamaño variable. A continuación, podrá asignar la matriz a la variante y usar Erase para desasignar la matriz temporal. Sin embargo, no se puede desasignar la matriz de tamaño fijo con Erase.
Ha tratado de pasar una cadena de tamaño fijo o un tipo definido por el usuario a la función VarType o TypeName.
El argumento de la función VarType o TypeName debe ser un tipo Variant válido.
Ha tratado de asignar un tipo definido por el usuario a una variable Variant. Aunque no puede asignar directamente una variable completa definida por el usuario a una variable Variant, puede usar la función Array para asignar los elementos individuales de una variable definida por el usuario a una variable Variant. Esto genera una variable Variant que contiene una matriz de variantes. La función VarType de cada elemento de esta matriz de variantes corresponde al tipo original de cada elemento del tipo definido por el usuario.
Ha tratado de pasar una matriz de cadenas de tamaño fijo o tipos definidos por el usuario como argumento de una llamada de procedimiento que requiere un argumento Variant. Tenga en cuenta que siempre que se enlazan en tiempo de ejecución procedimientos, es decir, cuando debe construirse una llamada en tiempo de ejecución, todos los argumentos deben pasarse como variables Variant. Por ejemplo, el siguiente código provoca este error:
Dim MyForm As Object ' Because MyForm is Object, binding is late. Set MyForm = New Form1 Dim StringArray(10) As String * 12 ' The next line generates the error. MyForm.MyProc StringArray
Para la matriz de la cadena, use un bucle para asignar cada miembro individual de la matriz a una matriz temporal de cadenas de tamaño variable. A continuación podrá asignar dicha matriz a una variable Variant para pasar el procedimiento. Para matrices definidas por el usuario, puede usar la función Array para asignar los elementos individuales de una variable definida por el usuario a una variable Variant. Esto genera una variable Variant que contiene una matriz de variantes. La función VarType de cada elemento de esta matriz de variantes corresponde al tipo original de cada elemento del tipo definido por el usuario.
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.