Доброго времени суток уважаемые эксперты! Прошу помочь в решении такой проблемы. Итак, расскажу на примере приложенного файла. Есть диапазон A1:G13. В него внесены 3 блока данных, разделённых пустыми строками. Каждый блок данных имеет название, которое находится в колонке H. Мне необходимо для дальнейших действий выделить один из этих блоков данных, но без столбца с названием (в примере - блок с названием F3). Я написал вот такой вот код: [vba]
Код
Sub Macro1() Range("H4").Offset(0, -7).Resize(1, 7).Select Range(Selection, Selection.End(xlDown)).Select End Sub
[/vba]
Проблема как раз в том, что таким вот образом выделяется ещё и 1-я строка следующего блока (т.е. 1-я заполненная строка под пустой строкой-разделителем), а мне нужно выделить блок ДО пустой строки. Я поискал на форумах и соорудил дополнительную строку в коде: [vba]
Код
Union(Selection.Offset(1, 0), Selection).Select
[/vba] Но таким образом выделенный диапазон только увеличивается вниз ещё на 1 строку. А как сделать так, чтобы он уменьшался - я не знаю.
Прошу подсказать, как мне правильно выделить искомый диапазон (может есть вообще более простой способ). Заранее спасибо!
Доброго времени суток уважаемые эксперты! Прошу помочь в решении такой проблемы. Итак, расскажу на примере приложенного файла. Есть диапазон A1:G13. В него внесены 3 блока данных, разделённых пустыми строками. Каждый блок данных имеет название, которое находится в колонке H. Мне необходимо для дальнейших действий выделить один из этих блоков данных, но без столбца с названием (в примере - блок с названием F3). Я написал вот такой вот код: [vba]
Код
Sub Macro1() Range("H4").Offset(0, -7).Resize(1, 7).Select Range(Selection, Selection.End(xlDown)).Select End Sub
[/vba]
Проблема как раз в том, что таким вот образом выделяется ещё и 1-я строка следующего блока (т.е. 1-я заполненная строка под пустой строкой-разделителем), а мне нужно выделить блок ДО пустой строки. Я поискал на форумах и соорудил дополнительную строку в коде: [vba]
Код
Union(Selection.Offset(1, 0), Selection).Select
[/vba] Но таким образом выделенный диапазон только увеличивается вниз ещё на 1 строку. А как сделать так, чтобы он уменьшался - я не знаю.
Прошу подсказать, как мне правильно выделить искомый диапазон (может есть вообще более простой способ). Заранее спасибо!master-dd
В принципе, да, но есть нюанс. Если вдруг в диапазоне B4:F4 не будет значений, то отработает неправильно.
На этот случай еще один, несколько более запарный, вариант: [vba]
Код
Sub Macro12() Dim rng1 As Range, rng2 As Range Set rng1 = Range("H4") Set rng2 = Range("H" & WorksheetFunction.Min(rng1.SpecialCells(xlLastCell).Row + 1, rng1.End(xlDown).Row)).Offset(-2) Range(rng1, rng2).Offset(0, -7).Resize(, 7).Select End Sub
[/vba] У него тоже есть нюансы, но ими практически можно пренебречь
В принципе, да, но есть нюанс. Если вдруг в диапазоне B4:F4 не будет значений, то отработает неправильно.
На этот случай еще один, несколько более запарный, вариант: [vba]
Код
Sub Macro12() Dim rng1 As Range, rng2 As Range Set rng1 = Range("H4") Set rng2 = Range("H" & WorksheetFunction.Min(rng1.SpecialCells(xlLastCell).Row + 1, rng1.End(xlDown).Row)).Offset(-2) Range(rng1, rng2).Offset(0, -7).Resize(, 7).Select End Sub
[/vba] У него тоже есть нюансы, но ими практически можно пренебречь Gustav