Borrusale, об идеальности...
1. Неточность:
Range для активного листа,
.Cells - для указанного (не везде). Здесь это роли не играет, но если кнопка будет на другом листе или такое записать в другой задаче?
2. Зачем a = a?
3. Почему 12 и зачем формула, которую нужно преобразовать в значение?4. Пожелание: пишите чище... Код легче читать, когда он написан с отступами, пробелами.
Вариант:
Код |
---|
Sub per2()
Dim nm As Integer, i As Long, lRw As Long
nm = Val(InputBox("Укажите порядковый номер месяца"))
If nm < 1 Or nm > 13 Then MsgBox "Это не номер месяца!", 64, "ОШИБКА": Exit Sub
Application.ScreenUpdating = False
With Worksheets("Лист1")
lRw = .Cells(.RowsCount, 1).End(xlUp).Row ' описания задачи в рабочей книге не будет
For i = 2 To lRw
If .Cells(i, 1) = nm Then .Cells(i, 3).Value = 2 + 3 + 7
Next i
End With
Application.ScreenUpdating = True
End Sub
|
Если диапазон большой, лучше данные записывать в массив и с ним работать.
P.S. п.3 снимается - увидел, это такая придумка автора )