Validar formato de codigo por Excel Macros

Como puedo validar si una celda cumple un formato especifico de codigo es decir:

Yo tengo P-0055-13-0023-00001-001

Ese un codigo. Yo tengo que validar si esa celda cumple con es formato:

  • Tengo que preguntar si tiene una "P" al comenzar seguido de un guion
  • luego preguntar si existe 4 digitos seguidos del guion anterior.
  • Luego preguntar si existe 2 digitos seguidos del guion anterior.
  • Luego preguntar si existe 4 digitos seguidos del guion anterior.
  • Luego preguntar si existe 5 digitos seguidos del guion anterior.
  • Luego preguntar si existe 3 digitos seguidos del guion anterior.

Como validaria en una celda por Macros algo asi.

1 respuesta

Respuesta
1

Te anexo una opción:

Sub ValidarCodigo()
'P-0055-13-0023-00001-001
'123456789012345678901234
    c = [B4]
    If Mid(c, 1, 2) = "P-" Then
        If IsNumeric(Mid(c, 3, 4)) Then
            If Mid(c, 7, 1) = "-" Then
                If IsNumeric(Mid(c, 8, 2)) Then
                    If Mid(c, 10, 1) = "-" Then
                        If IsNumeric(Mid(c, 11, 4)) Then
                            If Mid(c, 15, 1) = "-" Then
                                If IsNumeric(Mid(c, 16, 5)) Then
                                    If Mid(c, 21, 1) = "-" Then
                                        If IsNumeric(Mid(c, 22, 3)) Then
                                            MsgBox "Código correcto"
                                        Else
                                            MsgBox "Las posiciones 22 al 24 no es número"
                                        End If
                                    Else
                                        MsgBox "La posición 21 no es un guión"
                                    End If
                                Else
                                    MsgBox "Las posiciones 16 al 20 no es número"
                                End If
                            Else
                                MsgBox "La posición 15 no es un guión"
                            End If
                        Else
                            MsgBox "Las posiciones 11 al 14 no es número"
                        End If
                    Else
                        MsgBox "La posición 10 no es un guión"
                    End If
                Else
                    MsgBox "Las posiciones 8 al 9 no es número"
                End If
            Else
                MsgBox "La posición 7 no es un guión"
            End If
        Else
            MsgBox "Las posiciones 3 al 6 no es número"
        End If
    Else
        MsgBox "Falta la P-"
    End If
End Sub

Si no necesitas tanto detalle, te anexo otra propuesta:

Sub ValidaCod()
'P-0055-13-0023-00001-001
'123456789012345678901234
    c = [B4]
    valida = True
    datos = Array("", "P", "-", 1, 1, 1, 1, "-", 1, 1, "-", 1, 1, 1, 1, "-", 1, 1, 1, 1, 1, "-", 1, 1, 1)
    If Len(c) = 24 Then
        For i = 1 To 24
            If datos(i) = 1 Then
                If Not IsNumeric(Mid(c, i, 1)) Then valida = False
            Else
                If Mid(c, i, 1) <> datos(i) Then valida = False
            End If
        Next
    Else
        valida = False
    End If
    If valida Then
        MsgBox "Código correcto"
    Else
        MsgBox "El código NO es correcto"
    End If
End Sub

¡Gracias! Lo máximo Dante. Gracias

Y como le agregaria para que me recorra toda la columna de mi tabla. Es decir yo en mi tabla puedo tener N codigos, en la Columna Codigo. y Necesito que valide a todos los codigos. y que le ponga un color amarillo si no cumple con el formato.

Entonces hay que poner un ciclo.

Pero hay que modificar la macro.

Puedes valorar esta respuesta y crear una nueva pregunta.

En la nueva pregunta dime cuál macro es la que vas a utilizar. Y dime en qué columna de excel está el código.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas