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
- Abre tu libro de excel
- Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
- Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
- Del lado derecho copia la macro
- Guardar el archivo habilitado para macros.
':)
':)