Programación General > Visual Basic para principiantes

 Error 13: Porque se origina?. Causas.

(1/1)

Jimbenit:
Porque se origina este error... En mi codigo no veo ningun error y los OCX que utilizo parecen estar bien...
Me gustaria estudiar este error... Alguien me ayuda.


Saludos.

Nebire:
Es un problema de tipos de variables... el error seguramente está en tu código, pero en determinadas situaciones pasa inadvertido...
Por ejemplo observa este código, valor es un variant, le asignamos una cifra numérica y lo mostramos... ok
 luego le asignamos una matriz y la mostramos... ok (aunque no presenta nada)
sin embargo cuando llamamos al procedimiento mostrar valor, espera un byte, como le pasamos un variant se lo traga, pero cuando procesa el variant ve que aunque el variant tiene una matriz de bytes, sólo acepta una variable byte no una matriz... de paso reproduzco otros 2 errores de la misma naturaleza...


--- Código: Visual Basic --- Private Sub Form_Load()    Dim bytes(0 To 9) As Byte    Dim Valor As Variant        On Local Error GoTo showError        ' OK....    Valor = 2009    Debug.Print Valor    MsgBox Valor        ' ERROR: 13 error de tipo de variable    Valor = bytes    Debug.Print Valor    MsgBox Valor    MostrarValor (Valor)     ' ERROR: 6 error de desbordamiento    Valor = 2009    Debug.Print Valor    MsgBox Valor    MostrarValor (Valor)        ' ERROR: 450 error de tipo de argumentos...    Set Valor = Form1    MsgBox Valor    MostrarValor (Valor)        Exit SubshowError:    MsgBox "Error: Nº " & Err.Number & vbCrLf & Err.Description & vbCrLf & Err.Source    Err.Clear    Resume NextEnd Sub Private Sub MostrarValor(ByVal n As Byte)    MsgBox nEnd Sub  
... a veces canta un error 450 en vez del 13, si consigue identificar con más detalle el error y también el error 6 (desboradmiento), pero cuando no queda claro (donde más suele ocurrir son en las clases) y no hay un gestor de errores salta el 13.

La variable que más se presta a este tipo de error son los variant, pero también los de tipo Date y el propio CVERR... (convertir a error).
Si ejecutas el código que te he puesto paso a paso (F8) lo entenderás mejor, viendo donde se produce el mismo.

Jimbenit:
Mi amigo Nebire siempre ayudandome....
No sabes cuan agradecido estoy contigo... Me sirvió bastante esa explicación....
Gracias.  ^_^

Navegación

[0] Índice de Mensajes

Ir a la versión completa