Собственность MergeCells
Используя свойство MergeCells в операторе Если , вы проверяете, не объединена ли ячейка, затем выполняет следующие операторы, в противном случае оператор (ы) после остальное .
В следующем примере выбран диапазон I3: M12 , а 5 вводится как myValue . Первая таблица - это состояние второй таблицы до.
Код
Sub test()
Dim cel As Range
Dim selectedRange As Range
Dim myValue As Double
Application.ScreenUpdating = False
myValue = InputBox("Enter")
Set selectedRange = Application.Selection
For Each cel In selectedRange.Cells
If Not cel.MergeCells Then
' If not merged cell.
cel.Value = Evaluate(cel.Value & myValue)
Else
' if merged cell.
cel.Value = Evaluate(cel.Value + myValue)
End If
Next cel
Application.ScreenUpdating = True
End Sub
Count
Мы можем расширить предыдущие таблицы, добавив столбец COUNT ,
, где более очевидно, как объединенные ячейки «игнорируются» в Excel, т. Е. Все ячейки, кроме первой ячейки объединенной области, не будут учитываться (или суммироваться, или ...).
Ниже показано различие между подсчетом ячеек в VBA и в Excel.
Sub MergeTest()
With Range("J3:J12")
Debug.Print .Cells.Count
Debug.Print WorksheetFunction.Count(.Cells)
End With
With Range("J3:N12")
Debug.Print .Cells.Count
Debug.Print WorksheetFunction.Count(.Cells)
End With
End Sub
Результаты в окне Immediate:
10 ,
9 * * тысяча пятьдесят-одина,
50 ,
46
показывает, как VBA будет считать каждую ячейку, но Excel исключит все ячейки объединенной области, кроме первой.
В справке VBA найдите свойство MergeArea для получения дополнительной информации.