Я думаю, что лучший способ добиться этого - использовать разницу между выделенными ячейками и активной ячейкой (в пределах диапазона выделения единственная белая ячейка среди других голубых ячеек является активной ячейкой). Когда выбран диапазон, самая верхняя, самая левая ячейка является активной ячейкой. (Если вы не выберете диапазон вручную, в этом случае первая ячейка, по которой щелкают, является активной ячейкой.) И поскольку вы хотите воздействовать только на 3 ячейки, я считаю, что проще избежать цикла for и операторов if, которые в противном случае были бы участие.
Sub AddNumber()
'Select a range of 3 cells
Range("C3:C5").Select
'Subtract 1 from the top cell's value
ActiveCell.Value = ActiveCell.Value - 1
'Activate the cell below the first and add 1 to its value
Cells(ActiveCell.Row + 1, ActiveCell.Column).Activate
ActiveCell.Value = ActiveCell.Value + 1
'Activate the third cell and add 2 to its value
Cells(ActiveCell.Row + 1, ActiveCell.Column).Activate
ActiveCell.Value = ActiveCell.Value + 2
End Sub
Поскольку вы хотите оставить значение одной из ячеек в покое, вы можете опустить один из блоков кода, просто измените часть Cells(ActiveCell.Row + 1 [...]
соответственно.