Принятие только одной цифры (Microsoft Excel)
Рич удивляется, как он может настроить Excel так, чтобы при вводе одной цифры она автоматически переходила к следующей ячейке. Он хочет исключить нажатие Enter или Tab, чтобы перейти к следующей ячейке. Значение записи для диапазона ячеек всегда будет одной положительной цифрой.
Это невозможно сделать ни с одним собственным параметром конфигурации в Excel.
Вместо этого вам нужно будет создать макрос, который будет обрабатывать запись за вас. Естественный выбор для макроса — использовать событие Change для рабочего листа, так что каждый раз, когда значение вводится в ячейку, запись «растягивается» и заполняется ячейками в строке.
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
Этот макрос сначала проверяет, является ли введенное число числовым. Если это так, то цифры извлекаются из значения и помещаются в последовательные ячейки в строке.
Недостатком такого макроса, конечно же, является то, что вам все равно нужно нажимать Enter, чтобы вызвать событие. Если вы хотите полностью отказаться от нажатия Enter, вам придется полагаться на другой подход.
Этот метод основан на функции OnKey для назначения макросов определенным нажатиям клавиш. Поместите следующий код в стандартный макромодуль.
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
Чтобы запустить макрос, запустите макрос Assigns. После этого каждый раз, когда вводится цифра, она вставляется в текущую ячейку и выбирается следующая ячейка справа. Если вы наберете текст, ничего не произойдет.
(Конечно, если вы попытаетесь ввести смешанное значение, такое как B2B, тогда, когда вы нажмете «2», именно это и окажется в ячейке.) Когда вы закончите с этим типом ввода данных, запустите макрос ClearAssigns. закончить.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (6614) применим к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и новее) здесь:
link: / excelribbon-Accepting_Only_a_Single_Digit [Принимает только одну цифру]
.