Страницы: 1
RSS
Как узнать номер первой и последней строки для несмежных диапазонов?
 
В Range.Address диапазоны хранятся в порядке их выделения пользователем (например, $F$11:$H$14,$J$7:$L$11,$B$16:$D$20,$H$24:$I$29,$C$4:$D$7), поэтому просто взять первую и последнюю цифру не сработает.
Пока есть идея разобрать содержимое Range.Address на отдельные адреса, сохранить в массиве и дальше найти Min и Max. Но этот способ кажется несколько трудоёмким. Возможно я изобретаю велосипед и есть более простой способ узнать первую и последнюю строчку?
 
Можете уточнить задачу - надо найти (из примера в сообщении) какие строки? Наименьшую из всех выбранных и наибольшую из всех выбранных? Или для конкретного диапазона (например, второго по счету в выделении) надо найти первую и последнюю строку? Т.е. что надо найти 4 и 29, или 7 и 11?
Изменено: Пытливый - 22.03.2017 10:13:13
Кому решение нужно - тот пример и рисует.
 
Вариант
Код
Sub flRows()
Dim Rng As Range
Dim fRow&, lRow&
Set Rng = Range("$F$11:$H$14,$J$7:$L$11,$B$16:$D$20,$H$24:$I$29,$C$4:$D$7")
For I = 1 To Rng.Areas.Count
    If fRow <> Empty Then
        If Rng.Areas(I).Rows(1).Row < fRow Then fRow = Rng.Areas(I).Rows(1).Row
    Else
       fRow = Rng.Areas(I).Rows(1).Row
    End If
    If lRow <> Empty Then
        If Rng.Areas(I).Rows(Rng.Areas(I).Rows.Count).Row > lRow Then lRow = Rng.Areas(I).Rows(Rng.Areas(I).Rows.Count).Row
    Else
       lRow = Rng.Areas(I).Rows(1).Row
    End If
Next
MsgBox "Первая строка - " & fRow & vbCrLf & _
        "Последняя строка - " & lRow, vbInformation + vbOKOnly
End Sub
Изменено: Sanja - 22.03.2017 10:24:09
Согласие есть продукт при полном непротивлении сторон
 
Sanja, спасибо!
Задача решена, тему можно закрывать.
 
Sanja, только один вопрос для лучшего усвоения материала: почему Rng.Areas(I).Rows(1).Row, а не Rng.Areas(I).Row ?
 
Цитата
deesa написал: а не Rng.Areas(I).Row
Так Вы сами попробуйте так как предлагаете и поймете, что у Areas нет свойства Row
Хотя нет, работает. Наверное можно и так.
Изменено: Sanja - 22.03.2017 10:47:19
Согласие есть продукт при полном непротивлении сторон
Страницы: 1
Наверх