Добрый день. Подскажите есть ли возможность перейти на объеденённую ячейку? Допустим есть ячейка А1 в которой объеденено 3 строки, следовательно следующая за ней ячейка будет с адресом А4, можно ли как то сразу перейти на ячейку если не известно сколько строк объеденено в А1??
Добрый день. Подскажите есть ли возможность перейти на объеденённую ячейку? Допустим есть ячейка А1 в которой объеденено 3 строки, следовательно следующая за ней ячейка будет с адресом А4, можно ли как то сразу перейти на ячейку если не известно сколько строк объеденено в А1??imxotep
В данном случае, да. Если у Вам объединены ячейки НЕ одного столбца (напр. А1:С3), то нужно писать MergeArea.Rows.Count. Чтобы посчитать кол-во объединенных столбцов - MergeArea.Columns.Count. Короче, работайте с MergeArea, как с обычным диапазоном (Range).
В данном случае, да. Если у Вам объединены ячейки НЕ одного столбца (напр. А1:С3), то нужно писать MergeArea.Rows.Count. Чтобы посчитать кол-во объединенных столбцов - MergeArea.Columns.Count. Короче, работайте с MergeArea, как с обычным диапазоном (Range).Manyasha
imxotep, вот Вам пара примеров работы с объединёнными ячейками:
[vba]
Код
Private Sub SelMergeCells() ' выделить все сгруппированные ячейки в выделенном диапазоне If TypeName(Selection) <> "Range" Then Exit Sub If Selection.Cells.Count <= 1 Then Exit Sub If Intersect(Selection, ActiveSheet.UsedRange) Is Nothing Then Exit Sub Dim rMerge As Range, rCell As Range For Each rCell In Intersect(Selection, ActiveSheet.UsedRange) If rCell.MergeCells Then If rMerge Is Nothing Then Set rMerge = rCell Else Set rMerge = Union(rMerge, rCell) End If End If Next rCell On Error Resume Next rMerge.Select If Err Then MsgBox "Объединённых ячеек в выделенном диапазоне не найдено" End Sub
Private Sub FindMergeCells() ' перебрать все объединённые ячейки в выделенном диапазоне и предложить пользователю их разгруппировать If Not TypeOf Selection Is Range Then Exit Sub If Intersect(Selection, ActiveSheet.UsedRange) Is Nothing Then Exit Sub Dim rCell As Range, i&, Arr() With CreateObject("Scripting.Dictionary") For Each rCell In Intersect(Selection, ActiveSheet.UsedRange) ' собираем уникальные адреса объединённых ячеек в словарь If rCell.MergeCells Then .Item(rCell.MergeArea.Address(0, 0)) = 0& Next rCell If .Count = 0 Then MsgBox "Объединённых ячеек в выделенном диапазоне не найдено": Exit Sub Arr = .Keys ' из массива .Keys читать поэлементно нельзя For i = 0 To .Count - 1 ActiveSheet.Range(Arr(i)).Select If MsgBox("Разгруппировать ячейку [" & Arr(i) & "] ?", vbYesNo + vbQuestion, "Найдена объединённая ячейка") = vbYes Then Selection.UnMerge Next i End With End Sub
[/vba]
imxotep, вот Вам пара примеров работы с объединёнными ячейками:
[vba]
Код
Private Sub SelMergeCells() ' выделить все сгруппированные ячейки в выделенном диапазоне If TypeName(Selection) <> "Range" Then Exit Sub If Selection.Cells.Count <= 1 Then Exit Sub If Intersect(Selection, ActiveSheet.UsedRange) Is Nothing Then Exit Sub Dim rMerge As Range, rCell As Range For Each rCell In Intersect(Selection, ActiveSheet.UsedRange) If rCell.MergeCells Then If rMerge Is Nothing Then Set rMerge = rCell Else Set rMerge = Union(rMerge, rCell) End If End If Next rCell On Error Resume Next rMerge.Select If Err Then MsgBox "Объединённых ячеек в выделенном диапазоне не найдено" End Sub
Private Sub FindMergeCells() ' перебрать все объединённые ячейки в выделенном диапазоне и предложить пользователю их разгруппировать If Not TypeOf Selection Is Range Then Exit Sub If Intersect(Selection, ActiveSheet.UsedRange) Is Nothing Then Exit Sub Dim rCell As Range, i&, Arr() With CreateObject("Scripting.Dictionary") For Each rCell In Intersect(Selection, ActiveSheet.UsedRange) ' собираем уникальные адреса объединённых ячеек в словарь If rCell.MergeCells Then .Item(rCell.MergeArea.Address(0, 0)) = 0& Next rCell If .Count = 0 Then MsgBox "Объединённых ячеек в выделенном диапазоне не найдено": Exit Sub Arr = .Keys ' из массива .Keys читать поэлементно нельзя For i = 0 To .Count - 1 ActiveSheet.Range(Arr(i)).Select If MsgBox("Разгруппировать ячейку [" & Arr(i) & "] ?", vbYesNo + vbQuestion, "Найдена объединённая ячейка") = vbYes Then Selection.UnMerge Next i End With End Sub