Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Уменьшение размера выделения диапазона на 1 строку - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Уменьшение размера выделения диапазона на 1 строку (Макросы/Sub)
Уменьшение размера выделения диапазона на 1 строку
master-dd Дата: Пятница, 04.01.2019, 20:31 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 78
Репутация: 1 ±
Замечаний: 0% ±

2016
Доброго времени суток уважаемые эксперты!
Прошу помочь в решении такой проблемы. Итак, расскажу на примере приложенного файла. Есть диапазон 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 строку. А как сделать так, чтобы он уменьшался - я не знаю.

Прошу подсказать, как мне правильно выделить искомый диапазон (может есть вообще более простой способ). Заранее спасибо!
К сообщению приложен файл: Range1.xlsb (14.4 Kb)
 
Ответить
СообщениеДоброго времени суток уважаемые эксперты!
Прошу помочь в решении такой проблемы. Итак, расскажу на примере приложенного файла. Есть диапазон 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
Дата добавления - 04.01.2019 в 20:31
Gustav Дата: Пятница, 04.01.2019, 21:22 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2695
Репутация: 1123 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Например, так можно:
[vba]
Код
Sub Macro11()
    Range("H4").Offset(0, -7).Resize(1, 7).CurrentRegion.Resize(, 7).Select
End Sub
[/vba]


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеНапример, так можно:
[vba]
Код
Sub Macro11()
    Range("H4").Offset(0, -7).Resize(1, 7).CurrentRegion.Resize(, 7).Select
End Sub
[/vba]

Автор - Gustav
Дата добавления - 04.01.2019 в 21:22
Pelena Дата: Пятница, 04.01.2019, 21:25 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 19160
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
Как вариант
[vba]
Код
Range(Range("H4").EntireRow.End(xlDown).Offset(-2), Range("H4").Offset(0, -1)).Select
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеКак вариант
[vba]
Код
Range(Range("H4").EntireRow.End(xlDown).Offset(-2), Range("H4").Offset(0, -1)).Select
[/vba]

Автор - Pelena
Дата добавления - 04.01.2019 в 21:25
master-dd Дата: Пятница, 04.01.2019, 21:40 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 78
Репутация: 1 ±
Замечаний: 0% ±

2016
Gustav, спасибо! respect Отлично работает и всё элементарно!
 
Ответить
Сообщение Gustav, спасибо! respect Отлично работает и всё элементарно!

Автор - master-dd
Дата добавления - 04.01.2019 в 21:40
master-dd Дата: Пятница, 04.01.2019, 21:41 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 78
Репутация: 1 ±
Замечаний: 0% ±

2016
Pelena, спасибо!
 
Ответить
Сообщение Pelena, спасибо!

Автор - master-dd
Дата добавления - 04.01.2019 в 21:41
Gustav Дата: Пятница, 04.01.2019, 22:01 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2695
Репутация: 1123 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Отлично работает и всё элементарно!
В принципе, да, но есть нюанс. Если вдруг в диапазоне 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]
У него тоже есть нюансы, но ими практически можно пренебречь :)


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Отлично работает и всё элементарно!
В принципе, да, но есть нюанс. Если вдруг в диапазоне 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
Дата добавления - 04.01.2019 в 22:01
master-dd Дата: Пятница, 04.01.2019, 22:26 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 78
Репутация: 1 ±
Замечаний: 0% ±

2016
Gustav, yes


Сообщение отредактировал master-dd - Пятница, 04.01.2019, 22:26
 
Ответить
СообщениеGustav, yes

Автор - master-dd
Дата добавления - 04.01.2019 в 22:26
InExSu Дата: Воскресенье, 06.01.2019, 13:08 | Сообщение № 8
Группа: Друзья
Ранг: Ветеран
Сообщений: 648
Репутация: 96 ±
Замечаний: 0% ±

Excel 2010, 365
Привет!
А тут весело!
Участник с репутацией = 1 выкатил "непростой" код.
А Друг-Старожил, с репутацией 666, превратил код в ад!
более запарный


чтобы он уменьшалс


Предлагаю так:


Разработчик Битрикс24 php, Google Apps Script, VBA Excel Windows/Mac

Сообщение отредактировал InExSu - Воскресенье, 06.01.2019, 13:47
 
Ответить
СообщениеПривет!
А тут весело!
Участник с репутацией = 1 выкатил "непростой" код.
А Друг-Старожил, с репутацией 666, превратил код в ад!
более запарный


чтобы он уменьшалс


Предлагаю так:

Автор - InExSu
Дата добавления - 06.01.2019 в 13:08
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Уменьшение размера выделения диапазона на 1 строку (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!