Hacer que no se salga de una celda hasta que tenga los datos como se debe.

¡Hola Dam!

Me gustaría que me ayudaras con esta macro, tiene que ser macro no sirve utilizar validación de datos

Supongamos que quiero que en cierto rango A1:A100 se tenga que meter un dato con 11 caracteres exactos. Yo creo la subrutina:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Celda As Range
For Each Celda In Target
If Not Intersect(Celda, Range("A1:A100")) Is Nothing Then
If Celda< >"" and Len(Celda) <> 11 Then
MsgBox (Celda.Address & " debe tener 11 caracteres o ninguno")

Celda.Select

End If

End If
Next

Lo que yo quiero es añadir algo después de la orden Celda.Select de modo que entres en modo edición en la celda, de modo que no se puede salir de ahí mientras no hayas introducido 11 caracteres o bien los borres todos.

Quiero que los caracteres escritos no se borren, asi si por equivocación metimos 10 en lugar de 11 que solo haga falta meter el que falta.

¿Cómo va lo de las ecuaciones? Te sirvió de algo. Hay métodos genéricos para resolverlas, algunos de la misma forma que lo haríamos a mano mediante matrices y otros iterativos. Pero ahora mismo tendría que estudiar el algoritmo a usar, era una rama de las matemáticas que no se me quedó en la cabeza.

Un saludo.

1 Respuesta

Respuesta
1

Prueba con esto

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Celda As Range
For Each Celda In Target
    If Not Intersect(Celda, Range("A1:A100")) Is Nothing Then
        If Celda <> "" And Len(Celda) <> 11 Then
            MsgBox (Celda.Address & " debe tener 11 caracteres o ninguno")
            Celda.Select
            Application.SendKeys "{F2}"
        End If
    End If
Next
End Sub

En las ecuaciones te envié unos comentarios, si lo ves muy complicado no te desgastes.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas