Вместо использования Activecell
вам просто нужно будет использовать Range
object и For Each
statement.
For Each c In Range("A1:C3")
c.Value = c.Value + 1
Next c
Если есть пустые ячейки в пределах диапазона, который вы не хотите, чтобы добавить 1
на, то просто добавьте в If
заявлении.
If Not c.Value = vbNullString Then
EDIT:
Если вы хотите, чтобы иметь возможность выбрать диапазон, а затем запустить макрос, вы можете назначить свой выбор на Range
, а затем перебирать Range
.
Sub add1()
Dim rngSelection As Range
Set rngSelection = Selection
For Each c In rngSelection
If Not c.Value = vbNullString Then
c.Value = c.Value + 1
End If
Next c
End Sub
В зависимости от размера Range
вы хотите, чтобы выполнить это снова, это может быть более эффективным, чтобы загрузить значения ячеек в массив и выполнять вычисления в массиве.
Например, 'A1: C3' будет' A1: D4'? – Hearner
Попробуйте это 'ActiveCell.Resize (numRows + 1, numColumns + 1) .Select' – Hearner
Нет. Я хочу увеличить весь диапазон. Я выбираю некоторый диапазон, запускаю макрос, и хочу, чтобы все эти значения увеличились. – maro