Rich se pregunta cómo puede configurar Excel para que cuando ingrese un solo dígito avance automáticamente a la siguiente celda. Quiere eliminar presionar Enter o Tab para pasar a la siguiente celda. El valor de la entrada para un rango de celdas siempre será un solo dígito positivo.

Esto no se puede hacer con ningún ajuste de configuración nativo en Excel.

En su lugar, deberá crear una macro que maneje la entrada por usted. Una opción natural para la macro es usar el evento Cambiar para la hoja de trabajo, de modo que cada vez que se ingrese un valor en una celda, la entrada se «separe» y se rellene en las celdas de la fila.

Private Sub Worksheet_Change(ByVal Target As Range)

If IsNumeric(Target.Value) Then         CRow = Target.Row         CColumn = Target.Column - 1         Entry = Target.Value         For i = 1 To Len(Entry)

Cells(CRow, CColumn + i).Value = Mid(Entry, i, 1)

Next     End If End Sub

Esta macro verifica, primero, para ver si lo que se ingresó es numérico. Si es así, los dígitos se extraen del valor y se colocan en celdas consecutivas en la fila.

El inconveniente de tal macro, por supuesto, es que aún necesita presionar Enter para activar el evento. Si desea evitar presionar Enter por completo, deberá confiar en un enfoque diferente.

Esta técnica se basa en la función OnKey para asignar macros a pulsaciones de teclas específicas. Coloque el siguiente código en un módulo de macros estándar.

Sub Assigns()

Dim i As Variant     With Application         For i = 0 To 9             .OnKey i, "dig" & i         Next     End With End Sub
Sub ClearAssigns()

Dim i As Variant     With Application         For i = 0 To 9             .OnKey i         Next     End With End Sub
Sub dig0()

ActiveCell.Value = 0     ActiveCell.Offset(1, 0).Select End Sub
Sub dig1()

ActiveCell.Value = 1     ActiveCell.Offset(1, 0).Select End Sub
Sub dig2()

ActiveCell.Value = 2     ActiveCell.Offset(1, 0).Select End Sub
Sub dig3()

ActiveCell.Value = 3     ActiveCell.Offset(1, 0).Select End Sub
Sub dig4()

ActiveCell.Value = 4     ActiveCell.Offset(1, 0).Select End Sub
Sub dig5()

ActiveCell.Value = 5     ActiveCell.Offset(1, 0).Select End Sub
Sub dig6()

ActiveCell.Value = 6     ActiveCell.Offset(1, 0).Select End Sub
Sub dig7()

ActiveCell.Value = 7     ActiveCell.Offset(1, 0).Select End Sub
Sub dig8()

ActiveCell.Value = 8     ActiveCell.Offset(1, 0).Select End Sub
Sub dig9()

ActiveCell.Value = 9     ActiveCell.Offset(1, 0).Select End Sub

Para iniciar la macro, ejecute la macro Asignaciones. A partir de entonces, cada vez que se escribe un dígito, el dígito se rellena en la celda actual y se selecciona la siguiente celda a la derecha. Si escribe texto, no pasa nada.

(Por supuesto, si intenta ingresar un valor mixto, como B2B, entonces cuando presione «2» eso es lo que terminará en la celda). Cuando haya terminado con este tipo de ingreso de datos, ejecute la macro ClearAssigns para terminar.

_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 (6614) se aplica a Microsoft Excel 97, 2000, 2002 y 2003. Puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y posterior) aquí:

link: / excelribbon-Accepting_Only_a_Single_Digit [Aceptando solo un dígito].