Профессиональные приемы работы в Microsoft Excel

Обмен опытом => Microsoft Excel => Тема начата: Анатолий от 21.07.2009, 23:11

Название: Макрос последовательной и/или повторной нумерации выделенных ячеек
Отправлено: Анатолий от 21.07.2009, 23:11
Можно ли добиться следующего:

1. Включаем макрос.
2. Задаем нумерацию, начиная, например с 118.
3. Теперь выделение любой ячейки и нажатие клавиши/цифры 1 вводит в ячейку текущий номер = 118.
4. Переключаем нумерацию на следующий порядковый номер нажатием клавиши/цифры 2.
5. Теперь выделение любой ячейки и нажатие клавиши/цифры 1 вводит в ячейку следующий текущий номер = 119.
6. И так далее.
7. Выключаем макрос.

Примечание: клавиша с цифрой 1 и 2 взята для примера, а также, потому что они самые удобные для данной работы.

Спасибо.
Название: Re: Макрос последовательной и/или повторной нумерации выделенных ячеек
Отправлено: Шпец Докапыч от 22.07.2009, 04:21
Вот такой код можно положить в модуль книги (тогда сработает при открытии файла) или использовать в обычном модуле, тогда надо поменять названия модуле в коде макроса:
Public MyNum As Long
Private Sub Workbook_Open()
  If MyNum = 0 Then MyNum = CLng(Val(InputBox("Укажите номер", , "128")))
  With Application
    .OnKey "1", "ЭтаКнига.odin"
    .OnKey "{97}", "ЭтаКнига.odin"
    .OnKey "2", "ЭтаКнига.dva"
    .OnKey "{98}", "ЭтаКнига.dva"
    .OnKey "3", "ЭтаКнига.tri"
    .OnKey "{99}", "ЭтаКнига.tri"
  End With
End Sub

Sub odin(): ActiveCell.Value = MyNum: End Sub
Sub dva(): MyNum = MyNum + 1: End Sub
Sub tri() 'при нажатии на тройку отменяем все навесы
  With Application
    .OnKey "1": .OnKey "{97}"
    .OnKey "2": .OnKey "{98}"
    .OnKey "3": .OnKey "{99}"
  End With
End Sub
Название: Re: Макрос последовательной и/или повторной нумерации выделенных ячеек
Отправлено: Анатолий от 22.07.2009, 12:09
Теперь все работает. Докапычу огромное спасибо!
Название: Re: Макрос последовательной и/или повторной нумерации выделенных ячеек
Отправлено: Алексей Шмуйлович от 22.07.2009, 13:22
Я в таких случаях делаю гораздо проще:

=строка()+118