Salto automático a otra celda al saturarse

Quiero hacer esto: tengo una celda combinada en donde quiero ir tecleado texto. Ya limité la cantidad de caracteres que pueden escribirse allí (176), pero los menús de office solo me dejan poner un mensaje de error o detener la escritura. Lo que yo quiero es que no salga ningún mensaje ni se dentega la captura de texto; simplemente quiero que todo lo que exceda el límite establecido de caracteres se continúe escribiendo automáticamente en otra celda combinada, como si la celda tuviera una especie de margen al llegar a ese límite (176 caracteres) y simplemente se cambiara de renglón -NO me sirve que se genere un salto de línea en la misma celda; necesito que se cambie automáticamente el curso hacia OTRA para seguir escribiendo, y así sucesivamente. Sé que esto hace reír o bostezar a alguien que sabe de macros, pero yo nunca he escrito una y no tengo la menor idea. He visto tutoriales para saber qué son, pero para mi son sumamente confusos y le quitan muchas cosas que dan por obvias, y que yo, por no saber nada de comandos ni de sintaxis de lenguajes de programación, no sé escribir adecuadamente aunque encuentre los menús. Tengo office 2013.

1 respuesta

Respuesta
2

Cuando se está editando/ingresando datos dentro de una celda el control de la aplicación lo tiene el usuario, no el mismo Excel y/o el VBA, por lo que no es posible hacer, en automático, lo que estás mencionando. Tanto con "Validación" (como ya te diste cuenta) como con VBA (macros), podrás ingresar más de 176 caracteres y posterior a eso, cuando "salgas" de la celda, recién Excel te "avisará" que te pasaste del número. La única diferencia es que con VBA puedes borrar los datos que están de más y/o pasarlos a otra celda.

Un ejemplo para que te des idea. Si en cualquiera de las celdas del rango "A1:A10" te pasas los 10 caracteres, al dar "Enter" (o similar) la celda quedará solo con 10 caracteres y el resto pasará a la celda inmediata inferior:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Rows.Count >= 2 Then Exit Sub
If Not Application.Intersect(Target, Range("A1:A10")) Is Nothing Then
    If Len(Target) >= 10 Then
        Application.EnableEvents = False
        Target.Offset(1, 0) = Mid(Target, 11)
        Target = Left(Target, 10)
        Application.EnableEvents = True
    End If
End If
End Sub

Eso tienes que pegarlo en el módulo de la hoja. Dale click derecho a la pestaña de la hoja, en el menú contextual elige "Ver código", eso abrirá el editor de VBA. Pega en ese "gran espacio en blanco" lo que te he enviado.

Comentas

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas