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

Вход

Регистрация

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

 

= Мир MS Excel/Узнать диапазон выделенных ячеек - Мир MS Excel

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

Excel 2010
Допустим, Я выделяю мышью строки 1-3, далее через Selection.EntireRow.Select выделяю данный мне диапазон со всеми колонками на листе.
Мне же нужно выделить руками значения в строках 1-3, и нажатием макроса диапазон в колонках от самой крайней заполненной слева, и так же справа. Подскажите варианты

А так же, если использовать такой выборочный диапазон, то увеличится ли скорость обработки данных Екселем, либо же особо разницы с EntireRow нет?
 
Ответить
СообщениеДопустим, Я выделяю мышью строки 1-3, далее через Selection.EntireRow.Select выделяю данный мне диапазон со всеми колонками на листе.
Мне же нужно выделить руками значения в строках 1-3, и нажатием макроса диапазон в колонках от самой крайней заполненной слева, и так же справа. Подскажите варианты

А так же, если использовать такой выборочный диапазон, то увеличится ли скорость обработки данных Екселем, либо же особо разницы с EntireRow нет?

Автор - rever27
Дата добавления - 11.06.2015 в 18:39
Manyasha Дата: Четверг, 11.06.2015, 18:50 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
rever27, не очень поняла, что Вы хотите: самая левая заполненная колонка[vba]
Код
ActiveSheet.UsedRange.Column
[/vba]последняя колонка[vba]
Код
ActiveSheet.UsedRange.Columns.Count
[/vba]или[vba]
Код
Sheets(1).Cells(1, 1).CurrentRegion.Columns.Count
[/vba] если не то, прикладывайте пример и код, который уже у Вас есть.


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеrever27, не очень поняла, что Вы хотите: самая левая заполненная колонка[vba]
Код
ActiveSheet.UsedRange.Column
[/vba]последняя колонка[vba]
Код
ActiveSheet.UsedRange.Columns.Count
[/vba]или[vba]
Код
Sheets(1).Cells(1, 1).CurrentRegion.Columns.Count
[/vba] если не то, прикладывайте пример и код, который уже у Вас есть.

Автор - Manyasha
Дата добавления - 11.06.2015 в 18:50
KSV Дата: Четверг, 11.06.2015, 19:04 | Сообщение № 3
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
как вариант:
[vba]
Код
Intersect(Selection.EntireRow, Selection.CurrentRegion).Select
[/vba]
или так:
[vba]
Код
Selection.CurrentRegion.Rows(Selection.Row).Resize(Selection.Rows.Count).Select
[/vba]

увеличится ли скорость обработки данных Екселем

смотря что вы имеете ввиду под "обработка данных"...
например, если вы потом в цикле перебираете все эти ячейки, то, естественно увеличится (есть же разница, или по 20-ти ячейкам "пройтись" или по 20-ти тыс.)
а если вам нужно просто удалить выделенные строки (целиком или только строки вашей таблицы), то особой разницы нет
[vba]
Код
Selection.EntireRow.Delete ' так будут удалены строки, целиком
Intersect(Selection.EntireRow, Selection.CurrentRegion).Delete ' а так ячейки (строки вашей таблицы)
[/vba]


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Четверг, 11.06.2015, 19:21
 
Ответить
Сообщениекак вариант:
[vba]
Код
Intersect(Selection.EntireRow, Selection.CurrentRegion).Select
[/vba]
или так:
[vba]
Код
Selection.CurrentRegion.Rows(Selection.Row).Resize(Selection.Rows.Count).Select
[/vba]

увеличится ли скорость обработки данных Екселем

смотря что вы имеете ввиду под "обработка данных"...
например, если вы потом в цикле перебираете все эти ячейки, то, естественно увеличится (есть же разница, или по 20-ти ячейкам "пройтись" или по 20-ти тыс.)
а если вам нужно просто удалить выделенные строки (целиком или только строки вашей таблицы), то особой разницы нет
[vba]
Код
Selection.EntireRow.Delete ' так будут удалены строки, целиком
Intersect(Selection.EntireRow, Selection.CurrentRegion).Delete ' а так ячейки (строки вашей таблицы)
[/vba]

Автор - KSV
Дата добавления - 11.06.2015 в 19:04
rever27 Дата: Пятница, 12.06.2015, 09:26 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Все не совсем то.
Приложил пример. Кода нет.
В данном примере нужно при выделении любых ячеек выделить c ними также и колонки в дапазоне B по AL

Т.е. я выделяю 316-318 строчки, и после нажатия макроса должен выделиться B316:AL318

Естественно диапазон колонок всегда разный.
Потом этот диапазон я буду обрабатывать сортировкой, поиском значений и т.п.
Поэтому и интересует дальнейшая скорость работы либо с таким, либо со всем EntireRow, при условии, что остальные ячейки все равно пустые
К сообщению приложен файл: 4428576.xlsx (79.9 Kb)
 
Ответить
СообщениеВсе не совсем то.
Приложил пример. Кода нет.
В данном примере нужно при выделении любых ячеек выделить c ними также и колонки в дапазоне B по AL

Т.е. я выделяю 316-318 строчки, и после нажатия макроса должен выделиться B316:AL318

Естественно диапазон колонок всегда разный.
Потом этот диапазон я буду обрабатывать сортировкой, поиском значений и т.п.
Поэтому и интересует дальнейшая скорость работы либо с таким, либо со всем EntireRow, при условии, что остальные ячейки все равно пустые

Автор - rever27
Дата добавления - 12.06.2015 в 09:26
МВТ Дата: Пятница, 12.06.2015, 17:13 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 476
Репутация: 137 ±
Замечаний: 0% ±

Excel 2007
Вставляйте макрос в код нужного листа и пользуйтесь :)
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, ActiveSheet.UsedRange) Is Nothing Then Exit Sub
With Target
     Range("B" & .Row & ":AL" & .Row + .Rows.Count - 1).Select
End With
End Sub
[/vba]
 
Ответить
СообщениеВставляйте макрос в код нужного листа и пользуйтесь :)
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, ActiveSheet.UsedRange) Is Nothing Then Exit Sub
With Target
     Range("B" & .Row & ":AL" & .Row + .Rows.Count - 1).Select
End With
End Sub
[/vba]

Автор - МВТ
Дата добавления - 12.06.2015 в 17:13
rever27 Дата: Пятница, 12.06.2015, 17:33 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Спасибо всем за помощь, после пары часов мучений придумал такой вариант

[vba]
Код
Range(Cells(Selection.Row, 1), (Cells(Selection.Row + Selection.Rows.Count - 1, Columns.Count).End(xlToLeft))).Select
[/vba]
 
Ответить
СообщениеСпасибо всем за помощь, после пары часов мучений придумал такой вариант

[vba]
Код
Range(Cells(Selection.Row, 1), (Cells(Selection.Row + Selection.Rows.Count - 1, Columns.Count).End(xlToLeft))).Select
[/vba]

Автор - rever27
Дата добавления - 12.06.2015 в 17:33
KSV Дата: Пятница, 12.06.2015, 18:24 | Сообщение № 7
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
выделить c ними также и колонки в дапазоне B по AL

Так, если уже заранее известен диапазон по столбцам, то что вам мешало подставить его в мой первый вариант?
Сразу бы получили то, что вам нужно:
[vba]
Код
Intersect(Selection.EntireRow, Range("B:AL")).Select
[/vba]
и сэкономили бы "пару часов мучений"... :)
[p.s.]или свой "велосипед" быстрее едет? :) [/p.s.]


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщение
выделить c ними также и колонки в дапазоне B по AL

Так, если уже заранее известен диапазон по столбцам, то что вам мешало подставить его в мой первый вариант?
Сразу бы получили то, что вам нужно:
[vba]
Код
Intersect(Selection.EntireRow, Range("B:AL")).Select
[/vba]
и сэкономили бы "пару часов мучений"... :)
[p.s.]или свой "велосипед" быстрее едет? :) [/p.s.]

Автор - KSV
Дата добавления - 12.06.2015 в 18:24
rever27 Дата: Пятница, 12.06.2015, 23:30 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
KSV, нет, я же говорил, что неизвестный, это был пример, ибо просили.
Известен только начальный столбец - 2.
Но мой вариант отлично работает, приятно, что "допетрил" сам )
Еще раз спасибо за помощь )

[offtop] KSV, вы так и не посмотрели мои вопросы по прошлой моей теме
[spoiler]Сравнение значений в ячейках и выделение их
 
Ответить
СообщениеKSV, нет, я же говорил, что неизвестный, это был пример, ибо просили.
Известен только начальный столбец - 2.
Но мой вариант отлично работает, приятно, что "допетрил" сам )
Еще раз спасибо за помощь )

[offtop] KSV, вы так и не посмотрели мои вопросы по прошлой моей теме
[spoiler]Сравнение значений в ячейках и выделение их

Автор - rever27
Дата добавления - 12.06.2015 в 23:30
KSV Дата: Суббота, 13.06.2015, 14:47 | Сообщение № 9
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
[offtop]ответил[/offtop]


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщение[offtop]ответил[/offtop]

Автор - KSV
Дата добавления - 13.06.2015 в 14:47
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Узнать диапазон выделенных ячеек (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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