Принятие только одной цифры

Рич интересуется, как он может настроить Excel так, чтобы при вводе одной цифры она автоматически переходила к следующей ячейке. Он не хочет нажимать Enter или Tab , чтобы перейти к следующей ячейке. Значение записи для диапазона ячеек всегда будет одной положительной цифрой.

Это невозможно сделать с помощью каких-либо собственных параметров конфигурации в Excel. Вместо этого вам нужно будет создать макрос, который будет обрабатывать запись за вас. Естественным выбором для макроса является использование события Change для рабочего листа, так что каждый раз, когда значение вводится в ячейку, запись «растягивается» и заполняется ячейками в строке.

Private Sub Worksheet_Change (ByVal Target As Range) Если IsNumeric (Target.Value) Тогда 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 IfEnd Sub

Этот макрос сначала проверяет, является ли введенное число числовым. Если это так, то цифры извлекаются из значения и помещаются в последовательные ячейки в строке.

Недостатком такого макроса, конечно же, является то, что вам все равно нужно нажимать Enter , чтобы вызвать событие. Если вы хотите полностью отказаться от нажатия Enter , вам придется полагаться на другой подход. Этот метод использует функцию OnKey для назначения макросов определенным нажатым клавишам. Поместите следующий код в стандартный макромодуль.

Sub Assigns () Dim i As Variant With Application For i = 0 to 9 .OnKey i, «dig» & i Next End WithEnd Sub Sub ClearAssigns () Dim i как вариант с приложением для i = от 0 до 9 .OnKey i Следующий конец WithEnd Sub Sub dig0 () ActiveCell.Value = 0 ActiveCell. Смещение (1, 0) .SelectEnd Sub Sub dig1 () ActiveCell.Value = 1 ActiveCell.Offset (1, 0) .SelectEnd Sub Sub dig2 ( ) ActiveCell.Value = 2 ActiveCell.Offset (1, 0) .SelectEnd Sub Sub dig3 () ActiveCell.Value = 3 ActiveCell.Offset (1, 0) .SelectEnd Sub Sub dig4 () ActiveCell.Value = 4 ActiveCell.Offset (1, 0) .SelectEnd Sub Sub dig5 () ActiveCell.Value = 5 ActiveCell.Offset (1, 0 ) .SelectEnd Sub Sub dig6 () ActiveCell.Value = 6 ActiveCell.Offset (1, 0) .SelectEnd Sub Sub dig7 () ActiveCell.Value = 7 ActiveCell.Offset (1, 0) .SelectEnd Sub Sub dig8 () Активен Cell.Value = 8 ActiveCell.Offset (1, 0) .SelectEnd Sub Sub dig9 () ActiveCell.Value = 9 ActiveCell.Offset (1, 0) .SelectEnd Sub

Чтобы запустить макрос, запустите макрос Assigns. После этого каждый раз, когда вводится цифра, она вставляется в текущую ячейку и выбирается следующая ячейка справа. Если вы наберете текст, ничего не произойдет. (Конечно, если вы попытаетесь ввести смешанное значение, такое как B2B, тогда, когда вы нажмете «2», это будет то, что окажется в ячейке.) Когда вы закончите с этим типом ввода данных, запустите макрос ClearAssigns. закончить.

Источник: frestage.ru

Бытовой вопрос