Цикл по объединенным ячейкам в VBA - PullRequest
8 голосов
/ 22 февраля 2012

Можно ли циклически проходить через объединенные ячейки в .

  • У меня есть 6 объединенных ячеек в диапазоне B4:B40
  • Мне нужны значенияв этих 6 ячейках только 6 итераций.

Ответы [ 3 ]

9 голосов
/ 26 февраля 2012

Приведенные выше ответы выглядят так, что вы отсортировали.

Если вы не знаете, где находятся объединенные ячейки, вы можете использовать следующую процедуру для их быстрого обнаружения.

Когда я построил Mappit! , я понял, что когда я разрабатывал отчеты о слитых ячейках, слитые ячейки были частью xlBlanks

Таким образом, вы можете использовать код для немедленного обнаружения объединенных ячеек, а не циклически проходить проверку каждой ячейки, чтобы свойство MergedCells имело значение true.

Sub DetectMerged()
Dim rng1 As Range
Dim rng2 As Range
On Error Resume Next
Set rng1 = Intersect(Cells.SpecialCells(xlFormulas), Cells.SpecialCells(xlBlanks))
Set rng2 = Intersect(Cells.SpecialCells(xlConstants), Cells.SpecialCells(xlBlanks))
On Error GoTo 0
If Not rng1 Is Nothing Then MsgBox "Merged formulae cells in " & rng1.Address(0, 0)
If Not rng2 Is Nothing Then MsgBox "Merged constant cells in " & rng2.Address(0, 0)
End Sub
5 голосов
/ 22 февраля 2012

Вот первый удар по вашей проблеме:

Option Explicit

Sub loopOverCells()
    Dim rCell As Range
    Dim i As Integer

    Set rCell = [B1]
    For i = 1 To 6
        Debug.Print rCell.Address
        Set rCell = rCell.Offset(1, 0)    ' Jump 1 row down to the next cell
    Next i
End Sub
2 голосов
/ 23 февраля 2012

Просто немного покрепче, похожая идея:

Option Explicit

Sub ListValues()
Dim i As Long

    For i = 4 To 40 Step 6
        Debug.Print Range("B" & i).Value
    Next i

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...