Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Error 13 en VBA

| 15 comentarios

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”

Error 13 en VBA Error 13 en VBA

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

ejemplo Error 13 en VBA Error 13 en VBA

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.

corregir Error 13 en VBA Error 13 en VBA solucionar Error 13 en VBA Error 13 en VBA

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

15 comentarios

  1. gracias estoy aprendiendo mucho

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

  3. tengo este error actualmente en una macro alguien que pueda ayudarme error13

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

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

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

  7. Muchas gracias, me ayudaron en un problema que no podía solucionar de "error 13".

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

    • 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

    • 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

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

  10. Gracias, me ayudó a resolver mi problema y problemas futuros.

  11. Muchas gracias!
    Pude solucionar el error 13 al declarar la variable como una tipo variant.

  12. antes funcionaba bien, ahora, me sale el error con este código:

    Sub Rectángulo55_Haga_clic_en()
    userform7.Show
    End Sub

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

Deja una respuesta

Los campos requeridos estan marcados con *.