Validación de datos en excel

Quisiera me auxiliaran con unas validaciones de datos, tengo varias columnas, y en cada una de ellas van a tener validación de datos, por ejemplo en una columna necesito que solo me acepte letras y solo 4 dígitos, en otra solo números de 6 dígitos, en otra solo letras de 1 dígito.

1 Respuesta

Respuesta
1

H o l a:

Pon el siguiente código en los eventos de tu hoja. En la macro están indicadas las columnas "A", "B" y "C", cambia esas columnas por las que desees.

Private Sub Worksheet_Change(ByVal target As Range)
'Por.Dante Amor
    If Not Intersect(target, Columns("A")) Is Nothing Then
        'columna letras y solo 4
        If ValidaLargo(target, 4, "letras") = False Then Exit Sub
        If ValidaNumero(target, False, "letras") = False Then Exit Sub
    End If
    '
    If Not Intersect(target, Columns("B")) Is Nothing Then
        'columna números y solo 6
        If ValidaLargo(target, 6, "números") = False Then Exit Sub
        If ValidaNumero(target, True, "números") = False Then Exit Sub
    End If
    '
    If Not Intersect(target, Columns("C")) Is Nothing Then
        'columna letras y solo 1
        If ValidaLargo(target, 1, "letras") = False Then Exit Sub
        If ValidaNumero(target, False, "letras") = False Then Exit Sub
    End If
End Sub
'
Function ValidaLargo(target, largo, txt)
'Por.Dante Amor
    ValidaLargo = True
    If Len(target) <> largo Then
        MsgBox "Solamente se aceptan: " & largo & " " & txt, vbCritical, "ERROR"
        Application.EnableEvents = False
        target = ""
        target.Select
        Application.EnableEvents = True
        ValidaLargo = False
    End If
End Function
'
Function ValidaNumero(target, tipo, txt)
'Por.Dante Amor
    ValidaNumero = True
    For i = 1 To Len(target)
        l = Mid(target, i, 1)
        If IsNumeric(l) <> tipo Then
            MsgBox "Solamente se aceptan: " & txt, vbCritical, "ERROR"
            Application.EnableEvents = False
            target = ""
            target.Select
            Application.EnableEvents = True
            ValidaNumero = False
            Exit Function
        End If
    Next
End Function

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. Del lado derecho copia la macro
  5. Guardar el archivo habilitado para macros.

':)
':)

Como siempre quedo excelente, justo lo que necesitaba, mis más profundos respetos,

¡Muchas Gracias!

Hola, buenas noches, solo quisiera hacerte una pregunta, esta macro me funciono perfectamente, mi duda es que así como esta hoja donde inserte la macro, tengo alrededor de 30 hojas más, como puedo hacer que la macro funcione para las 30 hojas, mil gracias

Una opción es copiar la macro en las 30 hojas. Lo más práctico sería ponerla en los eventos de Thisworkbook, en el evento Workbook_SheetChange, de esa manera funcionaría en todas las hojas.

Si necesitas ayuda para que funcione en el evento Workbook_SheetChange, crea una nueva pregunta y dime si es para todas las hojas del libro, o algunas sí y otras no.

Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas