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

Рич интересуется, как он может настроить 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
Добавить комментарий