Sheila tiene una hoja de trabajo en la que se debe ingresar una serie de números de cuatro dígitos. A ella le gustaría una forma en la que no sea necesario presionar Enter o Tab entre cada entrada. En otras palabras, después de presionar cada cuarto dígito, Sheila quiere que Excel avance automáticamente a la siguiente celda.

Excel no ofrece este tipo de entrada de datos como opción. Sin embargo, puede crear una macro para manejar la entrada de datos. Una forma es para nosotros una macro simple que solicita al usuario una cadena de caracteres. Cuando el usuario presiona Enter (para significar que la cadena está completa), la macro toma cada fragmento sucesivo de cuatro caracteres y los coloca en celdas consecutivas.

Sub FourCharEntry1()

Dim str As String     Dim x As Integer     Dim y As Integer

str = InputBox("Enter string")

y = 0     For x = 1 To Len(str) Step 4         ActiveCell.Offset(0, y) = "'" & Mid(str, x, 4)

y = y + 1     Next End Sub

Tenga en cuenta que la macro, ya que coloca fragmentos de cuatro caracteres en las celdas, se asegura de que cada fragmento esté precedido por un apóstrofo. La razón de esto es manejar aquellas instancias en las que el fragmento de cuatro caracteres puede consistir solo en números y esos números comienzan con uno o más ceros. Agregar el apóstrofe asegura que Excel trate la entrada de la celda como texto y que los ceros iniciales no se borren.

También podría evitar el uso de un InputBox simplemente permitiendo que alguien ingrese texto en una celda de la hoja de trabajo. La persona puede escribir tanto como desee (miles de caracteres, si es necesario).

Luego, con la celda seleccionada, puede ejecutar una macro que extraiga la información de la celda y realice la misma tarea, dividiéndola en partes de cuatro caracteres. La siguiente macro hace precisamente eso:

Sub FourCharEntry2()

Dim str As String     Dim x As Integer     Dim y As Integer

str = ActiveCell.Value     y = 0     For x = 1 To Len(str) Step 4         ActiveCell.Offset(0, y) = "'" & Mid(str, x, 4)

y = y + 1     Next End Sub

Otro enfoque es utilizar un formulario de usuario personalizado para la entrada del usuario. El formulario proporciona una interacción mucho más rica con VBA, por lo que puede hacer que ingrese información en las celdas después de ingresar cada cuarto carácter.

Empiece por crear un formulario de usuario (como se describe en otros números de ExcelTips) que contenga dos controles: un cuadro de texto y un botón. Nombre el cuadro de texto vText y asocie el siguiente código con él:

Private Sub vText_Change()      If Len(vText) = 4 Then         ActiveCell = vText         ActiveCell.Offset(0, 1).Activate         UserForm1.vText.Value = ""

End If End Sub

Esto simplemente se ejecuta cada vez que cambia el contenido del cuadro de texto (es decir, cuando escribe cada carácter) y luego verifica la longitud de lo que contiene. Cuando la longitud llega a 4, el código toma esos caracteres y los mete en una celda. A continuación, se vacía el contenido de vText.

El nombre del botón que crea en el formulario de usuario realmente no importa. Se utilizará como una forma de cerrar el formulario de usuario y debe tener el siguiente código asociado:

Private Sub Cancel_Click()

Unload UserForm1 End Sub

Cuando esté listo para usar el formulario de usuario, simplemente seleccione la celda donde desea que comience la entrada y luego ejecute la siguiente macro:

Sub Start()

UserForm1.Show End Sub

Aparece el formulario de usuario y puede empezar a escribir. Cuando haya terminado, simplemente haga clic en el botón y se cerrará el formulario de usuario.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (13102) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365. Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí:

link: / excel-Automatically_Moving_from_Cell_to_Cell_when_Entering_Data [Mover automáticamente de celda a celda al ingresar datos].