El error 13 en Visual Basic Advance (VBA) se presenta cuando no hay coincidencia entre la variable que se declara y la variable que se ejecuta. Puesto que cada variable en Excel posee determinadas características y propiedades, al no coincidir los tipos , Excel lo asume como un error en tiempo de ejecución al cual denomina error número 13 “No coinciden los tipos”
Este tipo de error en VBA puede llegar a ser muy frecuente cuando se declara una variable específica y el valor de la misma se relaciona con las características de otras.
Ejemplo de Error 13 en vba
Un ejemplo sencillo de este tipo de error es el siguiente:
Nos interesa ejecutar una macro que muestre el contenido de la celda c2 en un Message Box. La celda c2 debe estar situada en la hoja número 2 y la variable denominada como” variable1” deberá ser declarada como entera.
De acuerdo al ejemplo, procedemos a crear la subrutina
Como hemos declarado variable1 como entera , vba espera que el valor de esta variable sea un número .El error surge cuando habiendo declarado la variable como entera el contenido de la celda c2 que le da valor a la variable1 no es una del tipo integer sino del tipo string (texto) . Al no haber haber coincidencia de tipos excel vba nos muestra el error 13.
A continuación vemos que en la celda c2 figura la palabra hola claramente no numérica sino de texto, al ejecutar la macro se produce el error mencionado.
La manera de solucionar el error es cambiar el valor de la celda c2 por un número, declarar la variable como una tipo variant o simplemente no declarar la variable . Sin embargo, La no declaración de variables puede provocar que se utilicen variables erróneas y que consuman más recursos de memoria a diferencia de las declararlas correctamente.
Descargar ejemplo de error 13: error 13 vba
Por: Andersson Schmid
05/01/2019 a las 9:56 am
gracias estoy aprendiendo mucho
15/07/2019 a las 8:28 am
me sale el error 13
alguien me podria ayudar
Private Sub Modificar_Click()
ActiveSheet.Unprotect
Cells(ComboBox1.ListIndex + 3, 2).Select
ActiveCell.Offset(0, 0) = CDbl(TextBox1) me marca aqui qen amarillo
ActiveCell.Offset(0, 1) = CDbl(TextBox2)
ActiveCell.Offset(0, 2) = CDbl(TextBox3)
ActiveCell.Offset(0, 3) = CDbl(TextBox4)
ActiveCell.Offset(0, 4) = CDbl(TextBox5)
ActiveCell.Offset(0, 5) = CDbl(TextBox6)
ActiveCell.Offset(0, 6) = CDbl(TextBox7)
ActiveCell.Offset(0, 7) = CDbl(TextBox8)
ActiveCell.Offset(0, 8) = CDbl(TextBox9)
ActiveCell.Offset(0, 9) = CDbl(TextBox10)
ActiveCell.Offset(0, 12) = CDbl(TextBox11)
ActiveCell.Offset(0, 13) = CDbl(TextBox12)
ActiveCell.Offset(0, 14) = CDbl(TextBox13)
ActiveCell.Offset(0, 15) = CDbl(TextBox14)
ActiveCell.Offset(0, 16) = CDbl(TextBox15)
ActiveCell.Offset(0, 10) = CDbl(TextBox16)
'limpiamos los datos
ComboBox1.Clear
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox8 = ""
TextBox9 = ""
TextBox10 = ""
TextBox11 = ""
TextBox12 = ""
TextBox13 = ""
TextBox14 = ""
TextBox15 = ""
TextBox16 = ""
ComboBox1.SetFocus
'protegemos la hoja
ActiveSheet.Protect
End Sub
Private Sub TextBox1_Change()
End Sub
Private Sub TextBox13_Change()
End Sub
Private Sub TextBox16_Change()
End Sub
17/07/2019 a las 11:06 am
tengo este error actualmente en una macro alguien que pueda ayudarme error13
24/01/2020 a las 12:57 am
Hola buenas noches, Queria que me ayudaran con este problema o error13
Sub calcular()
Cod_Cli = Range("H6")
Importe = Range("H10")
Modalidad = Range("I12")
Interes = Range("H14")
N_Cuotas = Range("I16")
Importe = Range("I18")
Total = Range("H20")
fecha = Range("H22")
For i = 1 To N_Cuotas
Sheets("Estados").Select
Rows("5:5").Select
Selection.Insert shift:=xlDown
Pintura
If i = 1 Then
Rayados
End If
If Modalidad = "Mensual" Then
Range("F5") = DateAdd("m", i, fecha)
End If
Range("B5") = Cod_Cli
Range("G5") = Importe
Range("D5") = Modalidad
Range("E5") = "Cuota -" & i
Next i
End Sub
No se donde puede estar el error
11/05/2020 a las 8:29 pm
me sale ese error en la linea que tiene -- ¿ como lo corrijo?
Sub DepurarLista()
Range("K5").Select
-- Do While ActiveCell.Value ""
If ActiveCell.Value = "FALSO" Then
ActiveCell.EntireRow.Hidden = True
End If
ActiveCell.Offset(1, 0).Select
Loop
End Sub
17/05/2020 a las 3:03 pm
Yo estoy teniendo este error al utilizar una macro que combine fecha con nombre, cuando cambio la celda de fecha a numérico, lo crea sin ningún problema. Probablemente el problema esté en el formato de fecha. Fijate. Saludos.
20/05/2020 a las 6:40 pm
Muchas gracias, me ayudaron en un problema que no podía solucionar de "error 13".
26/08/2020 a las 1:23 pm
HOLA BUENAS TARDES, NO ME CARGA LOS DATOS DEL REGISTRO A LA BASE DE DATOS. ALGUIEN ME PUEDE AYUDAR.
Sub IngresarDatos()
Dim codigo As String
Dim fecha As Date
Dim hora As Date
Dim paciente As String
Dim edad As String
Dim telefono As String
Dim cirujano As String
Dim Asistente As String
Dim Cirugia As String
Dim Anestecista As String
Dim ultFila As Long
codigo = Range("D7").Value
fecha = Range("D9").Value
hora = Range("D11").Value
paciente = Range("D13").Value
edad = Range("D15").Value
telefono = Range("D17").Value
cirujano = Range("D19").Value
Asistente = Range("D21").Value
Cirugia = Range("D23").Value
Anestecista = Range("D25").Value
If Sheets("Registro de Cirugias").Range("B8") = "" Then
ultFila = 11
Else
ultFila = Sheets("Registro de Cirugias").Range("B" & Rows.Count).End(xlUp).Row + 1
End If
Sheets("Registro de Cirugias").Cells(ultFila, 2) = codigo
Sheets("Registro de Cirugias").Cells(ultFila, 3) = fecha
Sheets("Registro de Cirugias").Cells(ultFila, 4) = hora
Sheets("Registro de Cirugias").Cells(ultFila, 5) = paciente
Sheets("Registro de Cirugias").Cells(ultFila, 6) = edad
Sheets("Registro de Cirugias").Cells(ultFila, 7) = telefono
Sheets("Registro de Cirugias").Cells(ultFila, 8) = cirujano
Sheets("Registro de Cirugias").Cells(ultFila, 9) = Asistente
Sheets("Registro de Cirugias").Cells(ultFila, 10) = Cirugia
Sheets("Registro de Cirugias").Cells(ultFila, 11) = Anestecista
MsgBox "Registro almacenado exitosamente!"
Range("D6").Value = ""
Range("D8").Value = ""
Range("D10").Value = ""
Range("D12").Value = ""
Range("D14").Value = ""
Range("D16").Value = ""
Range("D18").Value = ""
Range("D20").Value = ""
Range("D22").Value = ""
Range("D24").Value = ""
End Sub
01/10/2022 a las 11:57 am
a mi me parece que tu sentencia
ultFila = Sheets("Registro de Cirugias").Range("B" & Rows.Count).End(xlUp).Row + 1
no esta bien, pues para buscar la ultima fila seria xldown mas omenos asi
ultFila = Sheets("Registro de Cirugias").Range("B8").end(xlDown).row
esta sentencia da el numero de fila del ultimo registro
01/10/2022 a las 11:57 am
a mi me parece que tu sentencia
ultFila = Sheets("Registro de Cirugias").Range("B" & Rows.Count).End(xlUp).Row + 1
no esta bien, pues para buscar la ultima fila seria xldown mas omenos asi
ultFila = Sheets("Registro de Cirugias").Range("B8").end(xlDown).row
esta sentencia da el numero de fila del ultimo registro
10/12/2020 a las 3:15 pm
Hola
he definido la variable en forma correcta de tipo String
Lo curioso es que en el textbox he ingresado diferentes textos y funciona en el llamado a un listbox pero en ocasiones con otros textos de la tabla falla indicando el siguiente error y es despues de terminar la columna 10. me podrias dar una luz al respecto?
Se ha producido el error -2147352571 (80020005) en tiempo de ejecución: No se puede configurar la propiedad List. Type Mismatch
Dim b as string
For i = 8 To uc
b = LCase(txt_busqueda.Text)
If LCase(Cells(i, 10).Value) Like "*" & b & "*" Then
Me.Detalle_Seguimiento.AddItem Cells(i, 2)
Me.Detalle_Seguimiento.List(Me.Detalle_Seguimiento.ListCount - 1, 1) = Format(Hoja6.Cells(i, 3).Value, "dd-mm-yy")
Me.Detalle_Seguimiento.List(Me.Detalle_Seguimiento.ListCount - 1, 2) = Empty 'Hoja6.Cells(i, 4).Value
Me.Detalle_Seguimiento.List(Me.Detalle_Seguimiento.ListCount - 1, 3) = Hoja6.Cells(i, 5).Value
Me.Detalle_Seguimiento.List(Me.Detalle_Seguimiento.ListCount - 1, 4) = Hoja6.Cells(i, 6).Value
Me.Detalle_Seguimiento.List(Me.Detalle_Seguimiento.ListCount - 1, 5) = Hoja6.Cells(i, 7).Value
Me.Detalle_Seguimiento.List(Me.Detalle_Seguimiento.ListCount - 1, 6) = Hoja6.Cells(i, 8).Value
Me.Detalle_Seguimiento.List(Me.Detalle_Seguimiento.ListCount - 1, 7) = Hoja6.Cells(i, 9).Value
Me.Detalle_Seguimiento.List(Me.Detalle_Seguimiento.ListCount - 1, 8) = Hoja6.Cells(i, 10).Value
Me.Detalle_Seguimiento.List(Me.Detalle_Seguimiento.ListCount - 1, 9) = Hoja6.Cells(i, 11).Value
Me.Detalle_Seguimiento.List(Me.Detalle_Seguimiento.ListCount - 1, 10) = Format(Hoja6.Cells(i, 12).Value, "dd-mm-yy")
Me.Detalle_Seguimiento.List(Me.Detalle_Seguimiento.ListCount - 1, 11) = Hoja6.Cells(i, 13).Value
27/12/2021 a las 2:27 pm
Gracias, me ayudó a resolver mi problema y problemas futuros.
19/04/2022 a las 6:29 pm
Muchas gracias!
Pude solucionar el error 13 al declarar la variable como una tipo variant.
24/02/2023 a las 3:39 pm
antes funcionaba bien, ahora, me sale el error con este código:
Sub Rectángulo55_Haga_clic_en()
userform7.Show
End Sub
21/03/2023 a las 4:04 am
hola. en un boton de comando quiero que reconozca si se ha elegido un elemento del combobox se abra un formulario y si no un mensaje, pero me da error 13 " no coincide los tipos"
rivate Sub CommandButton1_Click()
If ComboBox3.ListIndex -1 Then
UserForm1.Hide
UserForm2.Hide
UserForm2.Show
ElseIf ComboBox3.ListIndex = -1 Then
MsgBox "Debe seleccionar una campaña", vbExclamation, "Mensaje"
Exit Sub
End If
End Sub
como puedo solucionarlo?
gracias.