Макс Пользователь Сообщений: 200 |
Добрый день уважаемые профи VBA, в очередной раз прошу Вашего совета в решении задачи. Есть книга, в нее иногда добавляются новые листы. Скрытых листов в книге нет. Пример файла во вложении. Изменено: Макс — 27.10.2013 09:37:21 |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
#2 27.10.2013 11:44:34 Вариант:
|
||
Hugo Пользователь Сообщений: 23249 |
Я бы делал иначе — сохранил копию книги, в ней удалил эти два листа. http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=52142 |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
Игорь, с копией книги действительно проще)) А я уткнулся в задание (выделение группы листов)… Но выделяет )) |
Hugo Пользователь Сообщений: 23249 |
Да, выделяет — но далее с переносом возможны проблемы. |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
|
Макс Пользователь Сообщений: 200 |
#7 27.10.2013 13:16:34 Юрий М, спасибо, проверил код — выделение группы листов работает ка надо, но вот как теперь эту группу перенести в новую пустую книгу, путем создания копий листа (копированием) ?
тоже светлая мысль, но на одном листе у меня есть умная таблица Excel, которая почему-то не копируется в группе. Пишет что «невозможно скопировать или переместить группу листов содержащих таблицу» Прикрепленные файлы
|
||
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
Прислушайтесь к совету Игоря — создавайте копию книги, а уже в ней удаляйте ненужные листы. Тогда и копировать группы листов не нужно. |
ikki Пользователь Сообщений: 9709 |
#9 27.10.2013 13:36:07
в некоторых случаях это не одно и то же фрилансер Excel, VBA — контакты в профиле |
||
Макс Пользователь Сообщений: 200 |
#10 27.10.2013 14:30:43 Решил выйти из этой ситуации немного подругому — я знаю какие листы мне точно не нужны и слава богу их количество всегда постоянное и названия тоже, поэтому скрываю два листа TR, Base. Затем делаю копию всех видимых листов и переношу эти копии в новую книгу. Код получился следующим:
Но в любом случае всем большое спасибо за помощь, без Ваших рассуждений я бы не догадался дойти до этого способа. |
||
Мотя Пользователь Сообщений: 3218 |
#11 27.10.2013 19:04:38 Вариант: см. файл. Прикрепленные файлы
|
Apkaxa 0 / 0 / 0 Регистрация: 15.03.2011 Сообщений: 23 |
||||
1 |
||||
Как выделить несколько листов?24.05.2011, 12:17. Показов 11172. Ответов 11 Метки нет (Все метки)
Понимаю, что ламерский вопрос, но тем не менее: Нужные ячейки я выделяю командой
Подскажите, плиз, подобный код, но только для листов.
0 |
Apkaxa 0 / 0 / 0 Регистрация: 15.03.2011 Сообщений: 23 |
||||
24.05.2011, 15:38 [ТС] |
2 |
|||
Извиняюсь. Не закончил код.
Хочу как-нибудь также выделить диапазон листов.
0 |
Терминатор |
||||
24.05.2011, 15:45 |
3 |
|||
Лист1, Лист2, и т.д. это имена Листов. |
Терминатор |
||||
24.05.2011, 16:01 |
4 |
|||
Если понадобится увидеть все названия Листов, в том числе тех,
Item(1). Это я так написал, если Книг открыто много можно указать |
0 / 0 / 0 Регистрация: 15.03.2011 Сообщений: 23 |
|
25.05.2011, 07:24 [ТС] |
5 |
to Terminator Sheets(Array(‘Лист1’, ‘Лист2’, ‘Лист3’)).Select
0 |
22 / 5 / 1 Регистрация: 05.09.2010 Сообщений: 370 |
|
26.05.2011, 06:57 |
6 |
Apkaxa
0 |
0 / 0 / 0 Регистрация: 15.03.2011 Сообщений: 23 |
|
26.05.2011, 08:18 [ТС] |
7 |
Блин. Неужели в VBA нет простого способа выделить все листы книги: с первого по последний? Что-нибудь типа Sheets Array(1 to i).Select
0 |
1 / 1 / 0 Регистрация: 19.05.2011 Сообщений: 80 |
|
26.05.2011, 13:21 |
8 |
Чтобы выделить все листы книги, надо выполнить инструкцию
0 |
0 / 0 / 0 Регистрация: 15.03.2011 Сообщений: 23 |
|
27.05.2011, 05:35 [ТС] |
9 |
Спасибо, gleb.
0 |
Терминатор |
|
27.05.2011, 11:13 |
10 |
Apkaxa, ну ты даёшь! Диапазон с Листами. |
0 / 0 / 0 Регистрация: 15.03.2011 Сообщений: 23 |
|
28.05.2011, 12:51 [ТС] |
11 |
to terminator Есть несколько листов с большими таблицами, в которые уже забиты разные данные.
0 |
Comanche |
||||
28.05.2011, 13:44 |
12 |
|||
Ничего не группируя, даёшь юзеру ввести данные на первом листе. Потом пишешь ‘Sheets.FillAcrossSheets Worksheets(1).Range(‘A1:C5′)’. Если всё же надо скрыть группу листов, то делаешь так:
Terminator прав: для программного формирования ГРУППЫ листов — не обойтись без МАССИВОВ (и если конструкция Array не подходит в силу ‘изменчивости’ начинки массива, то приходится использовать обычные массивы и в итоге мы сразу попадаем на использование перебора в цикле). |
Выделить несколько листов при заданном условии |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Содержание
- Как вы выбираете весь лист excel с помощью Range с помощью макроса в VBA?
- Как удалить все листы, кроме активного
- Как макрос работает
- Код макроса
- Как работает код
- Как использовать
- Как выбрать весь лист excel с диапазоном, используя макрос в VBA?
- 8 ответов
- Как в excel выделить все листы
- Выделение содержимого ячеек в Excel
- Выделение ячеек
- Выделение строк и столбцов
- Выделение таблицы, списка или листа
- Как выделить в Excel ячейки, таблицу, др.
- Выделение ячеек в Microsoft Excel
- Процесс выделения
- Способ 1: отдельная ячейка
- Способ 2: выделение столбца
- Способ 3: выделение строки
- Способ 4: выделение всего листа
- Способ 5: выделение диапазона
- Способ 6: применение горячих клавиш
- Каким образом можно выделить весь лист в Excel
- Выделение нескольких листов (Макросы/Sub)
- Выделить несколько листов при заданном условии (Макросы/Sub)
Как вы выбираете весь лист excel с помощью Range с помощью макроса в VBA?
Я нашел аналогичное решение этого вопроса в С#… См. Ссылку ниже
У кого-нибудь есть фрагмент, чтобы сделать это в VBA? Я не очень знаком с VBA, так что это было бы полезно. Вот что у меня так далеко…
Я обычно выбираю данные, используя “Ctrl + стрелка над стрелкой, стрелка вниз”, чтобы выделить весь диапазон ячеек. Когда я запускаю это в макросе, он кодирует A1: Q398247930, например. Мне нужно это просто
Это очень просто, и я мог бы легко сделать это сам без макроса, но я пытаюсь сделать весь процесс макросом, и это всего лишь часть этого.
редактировать: есть другие части, где я мог бы использовать тот же код, но диапазон, скажем, “C3: конец строк и столбцов”. В VBA есть способ получить местоположение последней ячейки в документе?
Я считаю, что вы хотите найти текущую область A1 и окружающих клеток – не обязательно все ячейки на листе.
Если так – просто используйте…
Range ( “A1” ). CurrentRegion
Вы можете просто использовать cells.select , чтобы выбрать ячейки all на листе. Вы можете получить действительный адрес, указав Range(Cells.Address) .
Если вы хотите найти последний Used Range , где вы внесли некоторые изменения форматирования или ввели значение, вы можете вызвать ActiveSheet.UsedRange и выбрать его там. Надеюсь, что поможет
вы можете использовать все ячейки как объект:
X теперь является объектом диапазона, который содержит весь рабочий лист
у вас есть несколько вариантов:
- Использование свойства UsedRange
- найдите последнюю используемую строку и столбец
- используйте мимику сдвига и сдвига вправо
Я лично использую использованный диапазон и чаще всего использую метод последней строки и столбца.
Вот как вы это сделаете, используя свойство UsedRange:
Этот оператор выберет все используемые диапазоны на листе, обратите внимание, что иногда это не очень хорошо работает при удалении столбцов и строк.
Альтернативой является поиск самой последней ячейки, используемой на листе
Что делает этот код:
- Найти последнюю ячейку, содержащую любое значение
- выберите ячейку (1,1) до последней ячейки
Я бы рекомендовал записывать макрос, например, найденный в этом сообщении;
Но если вы хотите найти конец своих данных, а не конец рабочей книги, если нет пустых ячеек между началом и концом ваших данных, я часто использую что-то вроде этого:
Вы остаетесь с R = до номера строки после окончания ваших данных. Это также можно использовать для столбца, а затем вы можете использовать что-то вроде Cells (C, R). Выберите, если вы сделали C представление столбца.
Вот то, что я использовал, я знаю, что это может использовать некоторые усовершенствования, но я думаю, что это поможет другим…
Возможно, это может сработать:
Sh.Range( “A1”, Sh.Range( “A” и Rows.Count).End(xlUp))
Обращаясь к самому первому вопросу, я изучаю то же самое.
Результат, который я получаю, записывая макрос, начинается с выбора ячейки A76:
Использовать с ActiveSheet:
Другой способ выбора всех ячеек в диапазоне, если данные непрерывны, состоит в использовании Range(«A1», Range(«A1»).End(xlDown).End(xlToRight)).Select .
Я обнаружил, что метод “.UsedRange” на рабочем листе во многих случаях лучше для решения этой проблемы. Я боролся с проблемой усечения, которая является нормальным поведением метода .CurrentRegion. Использование [Worksheets (“Sheet1”). Range (“A1”). CurrentRegion] не дает желаемых результатов, когда рабочий лист состоит из одного столбца с пробелами в строках (и пробелы требуются). В этом случае “.CurrentRegion” будет обрезаться при первой записи. Я реализовал работу вокруг, но недавно нашел еще лучшую; см. код ниже, который позволяет скопировать весь набор на другой лист или идентифицировать фактический адрес (или только строки и столбцы):
Источник
Как удалить все листы, кроме активного
Что делает макрос: Макрос может удалить все листы, кроме активного рабочего листа.
Как макрос работает
Этот макрос с помощью цикла пробегает по всем рабочим листам и проверяет на соответствие имени каждого рабочего листа, имя активного листа. Каждый раз, когда имя не совпадает, он удаляет лист. Обратите внимание на использование метода DisplayAlerts на шаге 4 (отключаем предупреждения Excel, чтобы не подтверждать каждое удаление).
Код макроса
Как работает код
- Объявляем переменную WS, которая будет хранить имя каждого листа.
- На шаге 2 макрос начинает цикл по всем рабочим листам в этой книге. Существует разница между ThisWorkbook и ActiveWorkbook. Объект ThisWorkbook относится к книге, в которой написан код макроса. ActiveWorkbook относится к книге, которая в данный момент активна. Они часто возвращают один и тот же объект, но, если рабочая книга работает, а код находится не в активной рабочей книге, они возвращают различные объекты. В этом случае, мы не хотим рисковать удалением листов в других книгах, так что мы используем ThisWorkbook.
- На этом этапе сравниваем активное имя листа с листом, который определяется с помощью цикла.
- Если имена листов различны, макрокоманда удаляет лист. Мы используем DisplayAlerts, чтобы подавить любые проверки подтверждения из Excel (чтобы не появлялось системное сообщение с вопросом: «Вы действительно хотите удалить лист?»)
- На шаге 5, переходим к следующему листу книги и повторяем проверку снова. После того, как пробежались по всем листам, макрос завершается.
Как использовать
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
- Активируйте редактор Visual Basic, нажав ALT + F11.
- Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
- Выберите Insert➜Module.
- Введите или вставьте код во вновь созданном модуле.
Обратите внимание, что при использовании ThisWorkbook в макросе вместо ActiveWorkbook, вы не сможете запустить макрос из личных макросов. Это потому, что ThisWorkbook относится к Personal Macro Workbook, а не рабочей книги, к которому следует применить макрос.
Источник
Как выбрать весь лист excel с диапазоном, используя макрос в VBA?
Я нашел аналогичное решение этого вопроса в c#. См. ссылку ниже
Как выбрать все ячейки на листе в Excel.Объект диапазона c#?
у кого-нибудь есть фрагмент, чтобы сделать это в VBA? Я не очень хорошо знаком с VBA, поэтому это было бы полезно. Вот что у меня есть.
Я обычно выбираю данные, используя «ctrl+shift over arrow, стрелка вниз», чтобы выбрать весь диапазон ячеек. Когда я запускаю это в макросе, он кодирует например, out A1: Q398247930. Мне нужно, чтобы это было просто
Это очень просто, и я мог бы легко сделать это сам без макроса, но я пытаюсь сделать весь процесс макроса, и это только часть его.
edit: Есть другие части, где я мог бы использовать тот же код, но диапазон говорит «C3:конец строк и столбцов». Есть ли способ в VBA получить местоположение последней ячейки в документ?
8 ответов
Я считаю, что вы хотите найти текущую область A1 и окружающие ячейки — не обязательно все ячейки на листе. Если да-просто используйте. Диапазон («A1»).CurrentRegion
вы можете просто использовать cells.select выберите все ячейки на листе. Вы можете получить действительный адрес, сказав Range(Cells.Address) .
если вы хотите найти последние Used Range где вы сделали некоторые изменения форматирования или ввели значение в вы можете вызвать ActiveSheet.UsedRange и выбрать его оттуда. Надеюсь, это поможет
вы можете использовать все ячейки в качестве объекта, как это:
X теперь является объектом диапазона, который содержит весь рабочий лист
у вас есть несколько вариантов здесь:
- использование свойства UsedRange
- найти последнюю строку и столбец, используемый
- используйте имитацию shift down и shift right
Я лично использую используемый диапазон и большую часть времени нахожу метод последней строки и столбца.
вот как вы это сделаете, используя свойство UsedRange:
эта инструкция будет выбирать все используемые диапазоны на листе, обратите внимание, что иногда это не очень хорошо работает при удалении столбцов и строк.
альтернативой является поиск самой последней ячейки, используемой в листе
что делает этот код:
- найти последнюю ячейку, содержащую любое значение
- выберите ячейку (1,1) до последней ячейки
Я бы рекомендовал записать макрос, как в этом посте;
но если вы хотите найти конец ваших данных, а не конец книги, необходимой, если между началом и концом ваших данных нет пустых ячеек, я часто использую что-то вроде этого;
вы остаетесь с R = на номер строки после завершения ваших данных. Это может быть использовано и для столбца, и тогда вы можете использовать что-то вроде ячеек(C , R).Выберите, если вы сделали с представлением столбца.
возможно, это может сработать:
ВГ.Range(«A1», Sh.Диапазон («A» И Строки.Рассчитывать.)End (xlUp))
ссылаюсь на первый вопрос, я смотрю на то же самое. Результат, который я получаю, записывая макрос, начинается с выбора ячейки A76:
для использования с ActiveSheet:
Источник
Как в excel выделить все листы
Выделение содержимого ячеек в Excel
Смотрите также Sheets(i).Name <> «Справочник — это другой
курсором верхнюю ячейку по нижней левой по соответствующему сектору отмечена только область строк, столбцов), а
Выделение ячеек
ячейки, цвет, вид, ячейке запрет наВыделить ячейки с формуламиЧтобы выделить однуНапример, здесь не
Есть несколько способов. клавишу «Ctrl», и,как выделить ячейки вЧтобы произвести какие-либоВ Excel можно выделять МТП» And Sheets(i).Name вопрос. Ну например
и удерживая Shift и верхней правой вертикальной панели координат, до первого пустого
Выделение строк и столбцов
также потребность отметить размер шрифта. Как ввод повторяющихся данных. в картинку или фигуру, выделился пустой столбецПервый способ.
удерживая её нажатой,Excel действия в Excel, содержимое ячеек, строк <> «Трактор номер их всех этих
кликнуть по нижней. ячейке массива. Диапазон, где отображается нумерация. элемента.
Выделение таблицы, списка или листа
элементы, которые соответствуют работать с цветом, В конце статьиExcel достаточно нажать на
и следующий заЕсли таблица не выделяем остальные ячейки.. нужно выделить эти или столбцов.
и водитель» And листов нужно сделатьKirill_9_7 находящийся между этимиЕсли нужно выделить подобнымЕсли нужно выделить не определенному условию. Давайте смотрите в статье про дубли смотрите. неё левой кнопкой ним столбец «Праздники».
Как выделить в Excel ячейки, таблицу, др.
Выделение ячеек в Microsoft Excel
чтобы при прокрутке.Найти и выделить в в нажали клавишу «Shift» строки. Или наводим столбца, строки. Нажимаем за три дняЧтобы выделить список или что бы приFor i =With CreateObject(«Scripting.Dictionary»)Как видим, существует большоеCtrl+A Экселе. решения данной задачи. «Листы в Excel» большой таблицы, этиВыделить только видимые
Процесс выделения
и нажали левую курсор на столбец на клавишу F8 до ее наступления таблицу, щелкните любую нажатии на кнопку 1 To Sheets.Count
Способ 1: отдельная ячейка
For i = количество вариантов выделения. Правда, если вДля выделения одной строки Зажимаем кнопку тут. строки и столбцы ячейки после фильтра.. мышку. с названием строк и ставим курсор (до срока оплаты, содержащуюся в них выделялись только листы Step 1
Способ 2: выделение столбца
2 To Worksheets.Count ячеек и их это время курсор в таблице простоShiftКоличество выделенных строк в были всегда видны. можно обыкновенным способом,
На закладке «Главная»Выделить область печатиТретий способ. (адреса строк). При в нижнюю ячейку до дня рождения, ячейку и нажмите которые были ейIf Sheets(i).Name <>.Item(Worksheets(i).Name) = 0& различных групп с находится в диапазоне
проводим по нейна клавиатуре иExcelМожно закрепить область как выделяем диапазон в разделе «Редактирование» так же, какКак выделить всю таблицу появлении черной стрелки, столбца или в т.д.). Об этих клавиши CTRL+A. же и созданы. «Виды работ» AndNext помощью клавиатуры или неразрывных данных, например, курсором с зажатой кликаем по верхней. печати выделенных фрагментов ячеек.
нажимаем на кнопку обыкновенный диапазон. Но целиком в нажимаем левой мышкой. ячейку строки. Нажимаем способах смотрите статьюЧтобы выделить весь лист,RAN Sheets(i).Name <> «СправочникSheets(.keys).Select мышки, а также
в таблице, то кнопкой мышки. ячейке столбца. Затем,Хоть и говорят, таблицы.Например, выделим ячейки
«Найти и выделить». при печати этогоExcelЧтобы выделить несколько левую мышку. Отключаем «Условное форматирование в нажмите клавиши CTRL+A: МТП» And Sheets(i).NameEnd With
используя комбинацию этих первоначально будет выделенаЕсли таблица большая, то не отпуская кнопку что нет специальнойМожно закрепить картинки, с цифрой 1. В появившемся списке фрагмента, нужно настроить.
Способ 3: выделение строки
строк Excel, нужно функцию выделения, нажав Excel».
или кнопку200?’200px’:»+(this.scrollHeight+5)+’px’);»>’Выделяем все я листы, <> «Трактор номерEnd Sub двух устройств. Каждый
только эта область. проще зажать кнопку кликаем по нижней. функции, без макросов, чтобы они не Для наглядности окрасим
нажимаем на функцию параметры печати.Есть сочетания клавиш, протянуть курсор с снова на клавишуМожно выделить ячейку,Выделить все кроме «Вид работ» и водитель» Andigrtsk пользователь может подобрать Лишь после повторногоShift Можно производить действия чтобы посчитать выделенные сдвигались при фильтрации
их в желтый «Выделение группы ячеек».Еще один способ с помощью которых нажатой левой мышкой
F8. диапазон при написаниив левом верхнем и т.д т.е. Sheets(i).Name <> «412-АПК»: более удобный лично
нажатия комбинации удастсяи последовательно кликнуть и в обратном строки в Excel. данных таблицы. цвет. В диалоговом окне выделить область печати
можно быстро выделить на другие строки.Как выделить не смежные формулы, чтобы не углу. все ячейки название _Например для себя стиль
Способ 4: выделение всего листа
выделить весь лист. по первой и порядке. Но, есть многоМожно закрепить ссылкиОтменим фильтр, получится так. ставим галочку у описан в статье таблицу Excel. СтавимКак выделить не смежные диапазоны в набирать их адреса
Примечание: которых не соответствуетAnd Sheets(i).Name <>, удаление с листа3 выделения в конкретнойТеперь выясним, как выделить последней ячейке строки.Кроме того, для выделения других приемов, чтобы в ячейках, размерВыделить повторяющиеся значения в слов «Пустые ячейки». «Закладка листа Excel курсор на любую
Способ 5: выделение диапазона
столбцы, строки вExcel вручную. Как это В некоторых случаях выделение шаблонам «Пустой Бланк» And и далее: ситуации, ведь выделение отдельные диапазоны ячеек
Также строки в таблицах столбцов в таблицах посчитать выделенные строки, ячеек, т.д.ExcelЕщё окно функции «Разметка страницы»» здесь. ячейку таблицы. НажимаемExcel. сделать, смотрите в одной ячейки можетDim k& Sheets(i).Name <> «Учет200?’200px’:»+(this.scrollHeight+5)+’px’);»>
одной или нескольких на листе. Для можно отметить подобным можно воспользоваться следующим ячейки. Как посчитатьОбо всем этом. Как выделить дубликаты «Выделение группы ячеек»Выделить несколько листов сочетание клавиш «Ctrl».Выделяем первый диапазон статье «Сложение, вычитание,
Способ 6: применение горячих клавиш
привести к выборуReDim arr(k) Работы» And Sheets(i).Name
- Sub Delete() ячеек удобнее выполнять того чтобы это
- образом, что и алгоритмом. Выделяем первую выделенные строки, смотрите
- смотрите статью «Как в можно вызвать клавишейExcel + «А». Буква
- Или выделяем - ячеек. Нажимаем на умножение, деление в нескольких смежных ячеек.For i =
<> «Рабочая форма»Dim i& одним способом, а
сделать достаточно обвести столбцы. Кликаем по
ячейку колонки, отпускаем в статье «Количество закрепить в ExcelExcel F5 или сочетание. «А» английская на как несмежные ячейки, клавишу «Ctrl», удерживая Excel» тут. Советы о том, 1 To Sheets.Count ThenWith ActiveWorkbook выделение целой строки курсором с зажатой первому элементу в мышку и жмем выделенных строк в
заголовок, строку, ячейку,
Каким образом можно выделить весь лист в Excel
. клавиш «Ctrl» +
Как выделить все листы
любой раскладке клавиатуры. диапазоны. её нажатой, выделяем
Вариантов выделения в как устранить эту Step 1arr(i) = Worksheets(i).NameApplication.DisplayAlerts = False или всего листа левой кнопкой мыши
столбце, а затем на комбинацию клавиш
Excel». ссылку, т.д.»В Excel есть «G». Выйдет окно в Excel.
Подробнее о сочетанияхИли выделяем - следующие диапазоны. таблице много, обращайте проблему, см. вIf Sheets(i).Name <>End IfFor i = – другим.
Выделение нескольких листов (Макросы/Sub)
определенную область на набираем сочетание клавишCtrl + Shift +Для того, чтобы производитьКак выделить дату в несколько способов выделить
«Переход» Внизу этого
Несколько вариантов выделения клавиш смотрите в как столбцы иКак выделить определённые ячейки внимание на перечень публикации сообщества под «БазаДанных» And Sheets(i).Name
Next
.Sheets.Count To 4Автор: Максим Тютюшев листе.Ctrl + Shift +
стрелка вниз различные действия с
Excel
дубликаты в таблице.
окна нажимаем на
листов смежных, несмежных, статье «Горячие клавиши
строки, устанавливая курсор
в
статей в конце
названием Как предотвратить
<> «Просто лист»
Sheets(arr).Select Step -1VushtДиапазон можно выделить, зажав стрелка вправо . При этом выделится
содержимым ячеек Excel,
. Как выделить выходные
Эти способы описаны
кнопку «Выделить…». Когда
всех листов сразу в Excel». на строку адреса
Excel
статьи в разделе
одновременное выделение нескольких
Then
Самое то странное,
.Sheets(i).Delete: как обычно, контрол-А кнопку
. Строка выделится до весь столбец до их нужно сначала дни в в статье «Как выделятся ячейки, их в Excel, смотритеВнимание! столбца или на. «Другие статьи по ячеек в Excel?.ReDim Preserve arr(k)
что ранее кодNext: Сtrl + A
Shift конца таблицы. Но последнего элемента, в выделить. Для этихExcel выделить повторяющиеся значения можно закрасить цветом в статье «Как
Выделить несколько листов при заданном условии (Макросы/Sub)
Этим способом выделяется столбец адреса строки.Если нужно этой теме».Есть разные способы,arr(k) = Sheets(i).Name был вот такой.Application.DisplayAlerts = TrueИ полезно будетна клавиатуре и
опять же, обязательным котором содержаться данные. целей в программе.
в Excel». для большей визуализации. заполнить таблицу в таблица до пустых НО, после выделения
вСначала рассмотрим, каккак выделить в Excel
k = k + 1Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>End Sub побольше прочитать про последовательно кликнуть по условием в данном Важным условием для имеется несколько инструментов.
Выделить любую датуДубликаты в таблицеТаким способом можно Excel сразу на строк, столбцов и первого столбца, строки,
Excel
просто выделить, сделать
ячейки, таблицу, ячейки
End If
x = 1Не успел((( комбинации клавиш.
верхней левой и
случае является наличие
выполнения данной процедуры Прежде всего, такое
можно разными способами, можно не только выделить ячейки по нескольких листах» тут. выделяются ячейки, не нажимаем и удерживаемвыделить не смежные ячейки активной ячейки в
с формулами, сразуNextFor i =HugoSaturn нижней правой ячейке
данных во всех является отсутствие пустых
разнообразие связано с
в зависимости от
выделить, удалить, но,
другим параметрам –
Как выделить все картинки
входящие в таблицу,
нажатой клавишу «Ctrl».
– ячейки, расположенные таблице для дальнейших все картинки, листыSheets(arr).Select 1 To Sheets.Count
: Я исходил из: Ctrl+A — самый выделяемой области. Либо ячейках строчки. ячеек в данной тем, что существует поставленной задачи. их можно сначала отличия по столбцам, в но расположенные рядомКак выделить таблицу в НЕ рядом, то
действий., т.д., в зависимостиKamikadze_NIf Sheets(i).Name <> задачи — ВЫДЕЛИТЬ. простой и быстрый выполнив операцию вДля выделения всей строки
колонке таблицы. В необходимость выделения различных Первый способ. сложить. строкам, только видимыеExcel с ней иExcel
делаем так. Выделяем
Итак,
от цели.: RAN, Огромное спасибо! «Виды работ» And
Для чего выделять способ. Или выделить обратном порядке: кликнуть листа делаем клик
обратном случае, будет
групп ячеек (диапазонов,
Можно изменить цвет
Можно поставить в
ячейки, т.д.
.
Источник
I found a similar solution to this question in c# How to Select all the cells in a worksheet in Excel.Range object of c#?
What is the process to do this in VBA?
I select data normally by using «ctrl+shift over arrow, down arrow» to select an entire range of cells. When I run this in a macro it codes out A1:Q398247930, for example. I need it to just be
.SetRange Range("A1:whenever I run out of rows and columns")
I could easily do it myself without a macro, but I’m trying to make the entire process a macro, and this is just a piece of it.
Sub sort()
'sort Macro
Range("B2").Select
ActiveWorkbook.Worksheets("Master").sort.SortFields.Clear
ActiveWorkbook.Worksheets("Master").sort.SortFields.Add Key:=Range("B2"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Master").sort
.SetRange Range("A1:whenever I run out of rows and columns")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
edit:
There are other parts where I might want to use the same code but the range is say «C3:End of rows & columns». Is there a way in VBA to get the location of the last cell in the document?
asked Jul 30, 2013 at 18:50
C. TewaltC. Tewalt
2,2612 gold badges29 silver badges47 bronze badges
I believe you want to find the current region of A1 and surrounding cells — not necessarily all cells on the sheet.
If so — simply use…
Range(«A1»).CurrentRegion
answered Jul 30, 2013 at 19:17
ExcelExpertExcelExpert
3522 silver badges4 bronze badges
1
You can simply use cells.select
to select all cells in the worksheet. You can get a valid address by saying Range(Cells.Address)
.
If you want to find the last Used Range
where you have made some formatting change or entered a value into you can call ActiveSheet.UsedRange
and select it from there. Hope that helps.
June7
19.5k8 gold badges24 silver badges33 bronze badges
answered Jul 30, 2013 at 19:11
chanceachancea
5,8083 gold badges28 silver badges39 bronze badges
2
you can use all cells as a object like this :
Dim x as Range
Set x = Worksheets("Sheet name").Cells
X is now a range object that contains the entire worksheet
answered Apr 15, 2015 at 11:47
you have a few options here:
- Using the UsedRange property
- find the last row and column used
- use a mimic of shift down and shift right
I personally use the Used Range and find last row and column method most of the time.
Here’s how you would do it using the UsedRange property:
Sheets("Sheet_Name").UsedRange.Select
This statement will select all used ranges in the worksheet, note that sometimes this doesn’t work very well when you delete columns and rows.
The alternative is to find the very last cell used in the worksheet
Dim rngTemp As Range
Set rngTemp = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
If Not rngTemp Is Nothing Then
Range(Cells(1, 1), rngTemp).Select
End If
What this code is doing:
- Find the last cell containing any value
- select cell(1,1) all the way to the last cell
answered Jul 30, 2013 at 20:32
Derek ChengDerek Cheng
5353 silver badges8 bronze badges
3
Another way to select all cells within a range, as long as the data is contiguous, is to use Range("A1", Range("A1").End(xlDown).End(xlToRight)).Select
.
answered Mar 29, 2019 at 19:38
I would recommend recording a macro, like found in this post;
Excel VBA macro to filter records
But if you are looking to find the end of your data and not the end of the workbook necessary, if there are not empty cells between the beginning and end of your data, I often use something like this;
R = 1
Do While Not IsEmpty(Sheets("Sheet1").Cells(R, 1))
R = R + 1
Loop
Range("A5:A" & R).Select 'This will give you a specific selection
You are left with R = to the number of the row after your data ends. This could be used for the column as well, and then you could use something like Cells(C , R).Select, if you made C the column representation.
answered Jul 30, 2013 at 19:25
MakeCentsMakeCents
7321 gold badge5 silver badges15 bronze badges
2
Sub SelectAllCellsInSheet(SheetName As String)
lastCol = Sheets(SheetName).Range("a1").End(xlToRight).Column
Lastrow = Sheets(SheetName).Cells(1, 1).End(xlDown).Row
Sheets(SheetName).Range("A1", Sheets(SheetName).Cells(Lastrow, lastCol)).Select
End Sub
To use with ActiveSheet:
Call SelectAllCellsInSheet(ActiveSheet.Name)
answered Mar 14, 2017 at 20:57
Yehia AmerYehia Amer
5985 silver badges11 bronze badges
Here is what I used, I know it could use some perfecting, but I think it will help others…
''STYLING''
Dim sheet As Range
' Find Number of rows used
Dim Final As Variant
Final = Range("A1").End(xlDown).Row
' Find Last Column
Dim lCol As Long
lCol = Cells(1, Columns.Count).End(xlToLeft).Column
Set sheet = ActiveWorkbook.ActiveSheet.Range("A" & Final & "", Cells(1, lCol ))
With sheet
.Interior.ColorIndex = 1
End With
answered Mar 16, 2019 at 4:29
I have found that the Worksheet «.UsedRange» method is superior in many instances to solve this problem.
I struggled with a truncation issue that is a normal behaviour of the «.CurrentRegion» method. Using [ Worksheets(«Sheet1»).Range(«A1»).CurrentRegion ] does not yield the results I desired when the worksheet consists of one column with blanks in the rows (and the blanks are wanted). In this case, the «.CurrentRegion» will truncate at the first record. I implemented a work around but recently found an even better one; see code below that allows copying the whole set to another sheet or to identify the actual address (or just rows and columns):
Sub mytest_GetAllUsedCells_in_Worksheet()
Dim myRange
Set myRange = Worksheets("Sheet1").UsedRange
'Alternative code: set myRange = activesheet.UsedRange
'use msgbox or debug.print to show the address range and counts
MsgBox myRange.Address
MsgBox myRange.Columns.Count
MsgBox myRange.Rows.Count
'Copy the Range of data to another sheet
'Note: contains all the cells with that are non-empty
myRange.Copy (Worksheets("Sheet2").Range("A1"))
'Note: transfers all cells starting at "A1" location.
' You can transfer to another area of the 2nd sheet
' by using an alternate starting location like "C5".
End Sub
answered May 2, 2019 at 19:38
Maybe this might work:
Sh.Range(«A1», Sh.Range(«A» & Rows.Count).End(xlUp))
answered Oct 31, 2014 at 18:38
Refering to the very first question, I am looking into the same.
The result I get, recording a macro, is, starting by selecting cell A76:
Sub find_last_row()
Range("A76").Select
Range(Selection, Selection.End(xlDown)).Select
End Sub
answered Aug 7, 2015 at 12:40
Я нашел аналогичное решение этого вопроса в c#…
См. ссылку ниже
Как выбрать все ячейки на листе в Excel.Объект диапазона c#?
у кого-нибудь есть фрагмент, чтобы сделать это в VBA? Я не очень хорошо знаком с VBA, поэтому это было бы полезно. Вот что у меня есть…
Я обычно выбираю данные, используя «ctrl+shift over arrow, стрелка вниз», чтобы выбрать весь диапазон ячеек. Когда я запускаю это в макросе, он кодирует например, out A1: Q398247930. Мне нужно, чтобы это было просто
.SetRange Range("A1:whenever I run out of rows and columns")
Это очень просто, и я мог бы легко сделать это сам без макроса, но я пытаюсь сделать весь процесс макроса, и это только часть его.
Sub sort()
'sort Macro
Range("B2").Select
ActiveWorkbook.Worksheets("Master").sort.SortFields.Clear
ActiveWorkbook.Worksheets("Master").sort.SortFields.Add Key:=Range("B2"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Master").sort
.SetRange Range("A1:whenever I run out of rows and columns")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
edit:
Есть другие части, где я мог бы использовать тот же код, но диапазон говорит «C3:конец строк и столбцов». Есть ли способ в VBA получить местоположение последней ячейки в документ?
спасибо!
8 ответов
Я считаю, что вы хотите найти текущую область A1 и окружающие ячейки — не обязательно все ячейки на листе.
Если да-просто используйте…
Диапазон («A1»).CurrentRegion
вы можете просто использовать cells.select
выберите все ячейки на листе. Вы можете получить действительный адрес, сказав Range(Cells.Address)
.
если вы хотите найти последние Used Range
где вы сделали некоторые изменения форматирования или ввели значение в вы можете вызвать ActiveSheet.UsedRange
и выбрать его оттуда. Надеюсь, это поможет
вы можете использовать все ячейки в качестве объекта, как это:
Dim x as Range
Set x = Worksheets("Sheet name").Cells
X теперь является объектом диапазона, который содержит весь рабочий лист
у вас есть несколько вариантов здесь:
- использование свойства UsedRange
- найти последнюю строку и столбец, используемый
- используйте имитацию shift down и shift right
Я лично использую используемый диапазон и большую часть времени нахожу метод последней строки и столбца.
вот как вы это сделаете, используя свойство UsedRange:
Sheets("Sheet_Name").UsedRange.Select
эта инструкция будет выбирать все используемые диапазоны на листе, обратите внимание, что иногда это не очень хорошо работает при удалении столбцов и строк.
альтернативой является поиск самой последней ячейки, используемой в листе
Dim rngTemp As Range
Set rngTemp = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
If Not rngTemp Is Nothing Then
Range(Cells(1, 1), rngTemp).Select
End If
что делает этот код:
- найти последнюю ячейку, содержащую любое значение
- выберите ячейку (1,1) до последней ячейки
Я бы рекомендовал записать макрос, как в этом посте;
Excel VBA макрос для фильтрации записей
но если вы хотите найти конец ваших данных, а не конец книги, необходимой, если между началом и концом ваших данных нет пустых ячеек, я часто использую что-то вроде этого;
R = 1
Do While Not IsEmpty(Sheets("Sheet1").Cells(R, 1))
R = R + 1
Loop
Range("A5:A" & R).Select 'This will give you a specific selection
вы остаетесь с R = на номер строки после завершения ваших данных. Это может быть использовано и для столбца, и тогда вы можете использовать что-то вроде ячеек(C , R).Выберите, если вы сделали с представлением столбца.
возможно, это может сработать:
ВГ.Range(«A1», Sh.Диапазон («A» И Строки.Рассчитывать.)End (xlUp))
ссылаюсь на первый вопрос, я смотрю на то же самое.
Результат, который я получаю, записывая макрос, начинается с выбора ячейки A76:
Sub find_last_row()
Range("A76").Select
Range(Selection, Selection.End(xlDown)).Select
End Sub
Sub SelectAllCellsInSheet(SheetName As String)
lastCol = Sheets(SheetName).Range("a1").End(xlToRight).Column
Lastrow = Sheets(SheetName).Cells(1, 1).End(xlDown).Row
Sheets(SheetName).Range("A1", Sheets(SheetName).Cells(Lastrow, lastCol)).Select
End Sub
для использования с ActiveSheet:
Call SelectAllCellsInSheet(ActiveSheet.Name)
Skip to content
Как удалить все листы, кроме активного
На чтение 2 мин. Просмотров 3.9k.
Что делает макрос: Макрос может удалить все листы, кроме активного рабочего листа.
Содержание
- Как макрос работает
- Код макроса
- Как работает код
- Как использовать
Как макрос работает
Этот макрос с помощью цикла пробегает по всем рабочим листам и проверяет на соответствие имени каждого рабочего листа, имя активного листа. Каждый раз, когда имя не совпадает, он удаляет лист. Обратите внимание на использование метода DisplayAlerts на шаге 4 (отключаем предупреждения Excel, чтобы не подтверждать каждое удаление).
Код макроса
Sub UdalitVseListiKromeAktivnogo() 'Шаг 1: Объявляем переменные Dim ws As Worksheet 'Шаг 2: Запускаем цикл по всем рабочим листам For Each ws In ThisWorkbook.Worksheets 'Шаг 3: Проверяем имя каждого рабочего листа If ws.Name <> ThisWorkbook.ActiveSheet.Name Then 'Шаг 4: Выключаем предупреждения Application.DisplayAlerts = False ws.Delete Application.DisplayAlerts = True End If 'Шаг 5: Переходим на следующий рабочий лист Next ws End Sub
Как работает код
- Объявляем переменную WS, которая будет хранить имя каждого листа.
- На шаге 2 макрос начинает цикл по всем рабочим листам в этой книге. Существует разница между ThisWorkbook и ActiveWorkbook. Объект ThisWorkbook относится к книге, в которой написан код макроса. ActiveWorkbook относится к книге, которая в данный момент активна. Они часто возвращают один и тот же объект, но, если рабочая книга работает, а код находится не в активной рабочей книге, они возвращают различные объекты. В этом случае, мы не хотим рисковать удалением листов в других книгах, так что мы используем ThisWorkbook.
- На этом этапе сравниваем активное имя листа с листом, который определяется с помощью цикла.
- Если имена листов различны, макрокоманда удаляет лист. Мы используем DisplayAlerts, чтобы подавить любые проверки подтверждения из Excel (чтобы не появлялось системное сообщение с вопросом: «Вы действительно хотите удалить лист?»)
- На шаге 5, переходим к следующему листу книги и повторяем проверку снова. После того, как пробежались по всем листам, макрос завершается.
Как использовать
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
- Активируйте редактор Visual Basic, нажав ALT + F11.
- Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
- Выберите Insert➜Module.
- Введите или вставьте код во вновь созданном модуле.
Обратите внимание, что при использовании ThisWorkbook в макросе вместо ActiveWorkbook, вы не сможете запустить макрос из личных макросов. Это потому, что ThisWorkbook относится к Personal Macro Workbook, а не рабочей книги, к которому следует применить макрос.