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...
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 Sub
showError:
MsgBox "Error: Nº " & Err.Number & vbCrLf & Err.Description & vbCrLf & Err.Source
Err.Clear
Resume Next
End Sub
Private Sub MostrarValor(ByVal n As Byte)
MsgBox n
End 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.