Excel макрос как выделить все листы

 

Макс

Пользователь

Сообщений: 200
Регистрация: 01.01.1970

Добрый день уважаемые профи VBA, в очередной раз прошу Вашего совета в решении задачи.

Есть книга, в нее иногда добавляются новые листы. Скрытых листов в книге нет.
Помогите пожалуйста с написанием макроса, который выделял бы все листы в книге, кроме листов с именами TR и Base (точно также как это делается при помощи зажатой кнопки ctrl и выделения курсором нужных листов), именно с именами, а не с порядковыми номерами, т.к. количество листов постоянно изменяется. После этого макрос перемещал копии выделенной группы листов в новую книгу.

Пример файла во вложении.

Изменено: Макс27.10.2013 09:37:21

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

#2

27.10.2013 11:44:34

Вариант:

Код
Sub Макрос1()
Dim i As Integer, x As Integer
    x = 1
    For i = 1 To Sheets.Count
        If Sheets(i).Name <> "TR" And Sheets(i).Name <> "Base" Then
            If x = 1 Then
                Sheets(i).Select
            Else
                Sheets(i).Select Replace:=False
            End If
            x = x + 1
        End If
    Next
End Sub
 

Hugo

Пользователь

Сообщений: 23249
Регистрация: 22.12.2012

Я бы делал иначе — сохранил копию книги, в ней удалил эти два листа.
Т.к. тут рядом уже намучились с этим Move:

http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=52142

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

Игорь, с копией книги действительно проще)) А я уткнулся в задание (выделение группы листов)… Но выделяет ))

 

Hugo

Пользователь

Сообщений: 23249
Регистрация: 22.12.2012

Да, выделяет — но далее с переносом возможны проблемы.
Если заменить на копирование и удаление — последний пример Михаила работает без проблем. Но у копирования есть свой недостаток — страдают строки >255 символов.

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

 

Макс

Пользователь

Сообщений: 200
Регистрация: 01.01.1970

#7

27.10.2013 13:16:34

Юрий М, спасибо, проверил код — выделение группы листов работает ка надо, но вот как теперь эту группу перенести в новую пустую книгу, путем создания копий листа (копированием) ?

Цитата
Я бы делал иначе — сохранил копию книги, в ней удалил эти два листа.

тоже светлая мысль, но на одном листе у меня есть умная таблица Excel, которая почему-то не копируется в группе. Пишет что «невозможно скопировать или переместить группу листов содержащих таблицу»

Прикрепленные файлы

  • SelectionSheets.xlsm (17.35 КБ)

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

Прислушайтесь к совету Игоря — создавайте копию книги, а уже в ней удаляйте ненужные листы. Тогда и копировать группы листов не нужно.

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

#9

27.10.2013 13:36:07

Цитата
Я бы делал иначе — сохранил копию книги, в ней удалил эти два листа.

в некоторых случаях это не одно и то же  :(
так что — смотря по задаче.

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Макс

Пользователь

Сообщений: 200
Регистрация: 01.01.1970

#10

27.10.2013 14:30:43

Решил выйти из этой ситуации немного подругому — я знаю какие листы мне точно не нужны и слава богу их количество всегда постоянное и названия тоже, поэтому скрываю два листа TR, Base.

Затем делаю копию всех видимых листов и переношу эти копии в новую книгу.

Код получился следующим:

Код
Sub Macro()
Dim ws As Worksheet, flg As Boolean

Sheets(Array("TR", "Base")).Select
ActiveWindow.SelectedSheets.Visible = False
    
For Each ws In Sheets
If ws.Visible = -1 Then
ws.Select Not flg
flg = True
End If
Next
ActiveWindow.SelectedSheets.Copy


Windows("SelectionSheets.xlsm").Activate
Worksheets("TR").Visible = xlSheetVisible
Worksheets("Base").Visible = xlSheetVisible

End Sub

Но в любом случае всем большое спасибо за помощь, без Ваших рассуждений я бы не догадался дойти до этого способа.

 

Мотя

Пользователь

Сообщений: 3218
Регистрация: 25.12.2012

#11

27.10.2013 19:04:38

Вариант: см. файл.

Прикрепленные файлы

  • MAKS.xls (86 КБ)

Apkaxa

0 / 0 / 0

Регистрация: 15.03.2011

Сообщений: 23

1

Как выделить несколько листов?

24.05.2011, 12:17. Показов 11172. Ответов 11

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Понимаю, что ламерский вопрос, но тем не менее:

Нужные ячейки я выделяю командой

Visual Basic
1
Range(cells(1,1),cells(1,j)

Подскажите, плиз, подобный код, но только для листов.



0



Apkaxa

0 / 0 / 0

Регистрация: 15.03.2011

Сообщений: 23

24.05.2011, 15:38

 [ТС]

2

Извиняюсь. Не закончил код.

Visual Basic
1
Range(Cells(1,1),Cells(1,j).Select

Хочу как-нибудь также выделить диапазон листов.



0



Терминатор

24.05.2011, 15:45

3

Visual Basic
1
2
3
Sub Выделить()
    Sheets(Array('Лист1', 'Лист2', 'Лист3')).Select
End Sub

Лист1, Лист2, и т.д. это имена Листов.

Терминатор

24.05.2011, 16:01

4

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

Visual Basic
1
2
3
        Dim vars As Variant
        For Each vars In Workbooks.Item(1).Sheets
        MsgBox (vars.Name)

Item(1). Это я так написал, если Книг открыто много можно указать
имя нужной. Item(‘Пример.xls’)

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
Рисуйте форму с ListBox, выводите в него имена всех листов книги. После чего можно пометить необходимые листы (в ListBox есть возможность выделять группу) и передать их, ну например в массив…



0



0 / 0 / 0

Регистрация: 15.03.2011

Сообщений: 23

26.05.2011, 08:18

 [ТС]

7

Блин.
Я знаю индекс первого листа — Sheets(1),
знаю индекс последнего i = Sheets.Count

Неужели в VBA нет простого способа выделить все листы книги: с первого по последний?

Что-нибудь типа Sheets Array(1 to i).Select



0



1 / 1 / 0

Регистрация: 19.05.2011

Сообщений: 80

26.05.2011, 13:21

8

Чтобы выделить все листы книги, надо выполнить инструкцию
Worksheets.Select



0



0 / 0 / 0

Регистрация: 15.03.2011

Сообщений: 23

27.05.2011, 05:35

 [ТС]

9

Спасибо, gleb.
А если не все нужно выделить а какой-то диапазон?



0



Терминатор

27.05.2011, 11:13

10

Apkaxa, ну ты даёшь! Диапазон с Листами.
Очень часто бывает что то что необходимо для выполнения, решается с другой стороны. Был как-то вопрос от одного юзера, которому надо было разместить 20 кнопок на одной форме и работать с ними. Конечно народ подсказал как это сделать, но чем дальше в лес тем больше дров, у него по ходу стало возникать всё больше и больше вопросов, а сама задача становилась всё более трудно выполнимой. В конце концов когда он описал полностью ту свою задачу, ему предложили всего 4-5 конопок (точно не помню) и код к ним. Он был счастлив.
У меня тоже что-то подобное было, поверь, я не с целью как-то пошутить, а с целью выроботки нового взгяда на твоё решение. Мошешь выложить проблему, наверняка кто-то из более опытных подскажет что-то более лучшее.

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′)’.

Если всё же надо скрыть группу листов, то делаешь так:

Visual Basic
1
2
3
4
5
6
7
8
Sub HideAllExceptFirst
    Dim arr As Variant, i As Long
    ReDim arr(1 To Worksheets.Count - 1)
    For i = 2 To Worksheets.Count
        arr(i - 1) = Worksheets(i).Name
    Next
    Sheets(arr).Visible = False
End Sub

Terminator прав: для программного формирования ГРУППЫ листов — не обойтись без МАССИВОВ (и если конструкция Array не подходит в силу ‘изменчивости’ начинки массива, то приходится использовать обычные массивы и в итоге мы сразу попадаем на использование перебора в цикле).

Выделить несколько листов при заданном условии

Kamikadze_N

Дата: Вторник, 26.07.2016, 08:12 |
Сообщение № 1

Группа: Пользователи

Ранг: Участник

Сообщений: 75


Репутация:

6

±

Замечаний:
0% ±


Excel 2010

Добрый день. В рабочей книге есть несколько листов (их названия не меняются). На одном из листов есть форма формирующая новые листы, названия которых 6ти значные числа.
Нужно выделять эти сформированные листы, отправить их на печать и удалить.
Подскажите пожалуйста, как прописать условие чтобы выделялись все листы попадающие под условие.[vba]

Код

For i = 1 To Sheets.Count Step 1
        If Sheets(i).Name <> «Виды работ» And Sheets(i).Name <> «Справочник МТП» And Sheets(i).Name <> «Трактор номер и водитель» And Sheets(i).Name <> «412-АПК» _
        And Sheets(i).Name <> «Пустой Бланк» And Sheets(i).Name <> «Учет Работы» And Sheets(i).Name <> «Рабочая форма» Then
        arr(i) = Worksheets(i).Name
        End If
    Next
    Sheets(arr).Select

[/vba]
Самое то странное, что ранее код был вот такой.
[vba]

Код

x = 1
    For i = 1 To Sheets.Count
        If Sheets(i).Name <> «Виды работ» And Sheets(i).Name <> «Справочник МТП» And Sheets(i).Name <> «Трактор номер и водитель» And Sheets(i).Name <> «412-АПК» _
        And Sheets(i).Name <> «Пустой Бланк» And Sheets(i).Name <> «Учет Работы» And Sheets(i).Name <> «Рабочая форма» Then
            If x = 1 Then
                Sheets(i).Select
            Else
                Sheets(i).Select Replace:=False
            End If
            x = x + 1
        End If
    Next

[/vba]
И он работал, а в один прекрасный момент перестал работать и выделяется только один лист.

 

Ответить

KuklP

Дата: Вторник, 26.07.2016, 08:28 |
Сообщение № 2

Группа: Проверенные

Ранг: Старожил

Сообщений: 2369


Репутация:

486

±

Замечаний:
0% ±


2003-2010

У Вас одна переменная и для счетчика листов и для индекса массивов. Это неправильно. Дальше и обсуждать не стоит. Что за массив arr? Хотите помощи — не обрывки своего ваяния выкладывайте, а пример согласно Правил.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728

 

Ответить

Kamikadze_N

Дата: Вторник, 26.07.2016, 09:06 |
Сообщение № 3

Группа: Пользователи

Ранг: Участник

Сообщений: 75


Репутация:

6

±

Замечаний:
0% ±


Excel 2010

KuklP, Вот файл с примером, Нужно что бы при нажатии на кнопку выделялись только листы которые были ей же и созданы.

К сообщению приложен файл:

2357853.xlsm
(22.7 Kb)

 

Ответить

RAN

Дата: Вторник, 26.07.2016, 09:25 |
Сообщение № 4

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

[vba]

Код

    ‘Выделяем все я листы, кроме «Вид работ» и т.д т.е. все ячейки название которых не соответствует шаблонам
    Dim k&
    ReDim arr(k)
    For i = 1 To Sheets.Count Step 1
        If Sheets(i).Name <> «БазаДанных» And Sheets(i).Name <> «Просто лист» Then
            ReDim Preserve arr(k)
            arr(k) = Sheets(i).Name
            k = k + 1
        End If
    Next
    Sheets(arr).Select

[/vba]


Быть или не быть, вот в чем загвоздка!

 

Ответить

Kamikadze_N

Дата: Вторник, 26.07.2016, 09:27 |
Сообщение № 5

Группа: Пользователи

Ранг: Участник

Сообщений: 75


Репутация:

6

±

Замечаний:
0% ±


Excel 2010

RAN, Огромное спасибо!

 

Ответить

Содержание

  1. Как вы выбираете весь лист excel с помощью Range с помощью макроса в VBA?
  2. Как удалить все листы, кроме активного
  3. Как макрос работает
  4. Код макроса
  5. Как работает код
  6. Как использовать
  7. Как выбрать весь лист excel с диапазоном, используя макрос в VBA?
  8. 8 ответов
  9. Как в excel выделить все листы
  10. Выделение содержимого ячеек в Excel
  11. Выделение ячеек
  12. Выделение строк и столбцов
  13. Выделение таблицы, списка или листа
  14. Как выделить в Excel ячейки, таблицу, др.
  15. Выделение ячеек в Microsoft Excel
  16. Процесс выделения
  17. Способ 1: отдельная ячейка
  18. Способ 2: выделение столбца
  19. Способ 3: выделение строки
  20. Способ 4: выделение всего листа
  21. Способ 5: выделение диапазона
  22. Способ 6: применение горячих клавиш
  23. Каким образом можно выделить весь лист в Excel
  24. Выделение нескольких листов (Макросы/Sub)
  25. Выделить несколько листов при заданном условии (Макросы/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, чтобы не подтверждать каждое удаление).

Код макроса

Как работает код

  1. Объявляем переменную WS, которая будет хранить имя каждого листа.
  2. На шаге 2 макрос начинает цикл по всем рабочим листам в этой книге. Существует разница между ThisWorkbook и ActiveWorkbook. Объект ThisWorkbook относится к книге, в которой написан код макроса. ActiveWorkbook относится к книге, которая в данный момент активна. Они часто возвращают один и тот же объект, но, если рабочая книга работает, а код находится не в активной рабочей книге, они возвращают различные объекты. В этом случае, мы не хотим рисковать удалением листов в других книгах, так что мы используем ThisWorkbook.
  3. На этом этапе сравниваем активное имя листа с листом, который определяется с помощью цикла.
  4. Если имена листов различны, макрокоманда удаляет лист. Мы используем DisplayAlerts, чтобы подавить любые проверки подтверждения из Excel (чтобы не появлялось системное сообщение с вопросом: «Вы действительно хотите удалить лист?»)
  5. На шаге 5, переходим к следующему листу книги и повторяем проверку снова. После того, как пробежались по всем листам, макрос завершается.

Как использовать

Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код во вновь созданном модуле.

Обратите внимание, что при использовании 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 теперь является объектом диапазона, который содержит весь рабочий лист

у вас есть несколько вариантов здесь:

  1. использование свойства UsedRange
  2. найти последнюю строку и столбец, используемый
  3. используйте имитацию shift down и shift right

Я лично использую используемый диапазон и большую часть времени нахожу метод последней строки и столбца.

вот как вы это сделаете, используя свойство UsedRange:

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

альтернативой является поиск самой последней ячейки, используемой в листе

что делает этот код:

  1. найти последнюю ячейку, содержащую любое значение
  2. выберите ячейку (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.​ же и созданы.​ «Виды работ» And​Next​ помощью клавиатуры или​ неразрывных данных, например,​ курсором с зажатой​ кликаем по верхней​.​ печати выделенных фрагментов​ ячеек.​

​ нажимаем на кнопку​ обыкновенный диапазон. Но​ целиком в​ нажимаем левой мышкой.​ ячейку строки. Нажимаем​ способах смотрите статью​Чтобы выделить весь лист,​RAN​ Sheets(i).Name <> «Справочник​Sheets(.keys).Select​ мышки, а также​

​ в таблице, то​ кнопкой мышки.​ ячейке столбца. Затем,​Хоть и говорят,​ таблицы.​Например, выделим ячейки​

​ «Найти и выделить».​ при печати этого​​Excel​​Чтобы выделить несколько​ левую мышку. Отключаем​ «Условное форматирование в​ нажмите клавиши CTRL+A​:​ МТП» And Sheets(i).Name​End With​

​ используя комбинацию этих​ первоначально будет выделена​Если таблица большая, то​​ не отпуская кнопку​​ что нет специальной​Можно закрепить картинки,​ с цифрой 1.​ В появившемся списке​ фрагмента, нужно настроить​.​

Способ 3: выделение строки

​ строк Excel, нужно​ функцию выделения, нажав​ Excel».​

​ или кнопку​200?’200px’:»+(this.scrollHeight+5)+’px’);»>’Выделяем все я листы,​ <> «Трактор номер​End Sub​ двух устройств. Каждый​

​ только эта область.​ проще зажать кнопку​​ кликаем по нижней.​​ функции, без макросов,​ чтобы они не​ Для наглядности окрасим​

​ нажимаем на функцию​ параметры печати.​Есть сочетания клавиш,​ протянуть курсор с​ снова на клавишу​Можно выделить ячейку,​Выделить все​​ кроме «Вид работ»​ и водитель» And​​igrtsk​ пользователь может подобрать​ Лишь после повторного​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&​ одним способом, а​

​ сделать достаточно обвести​​ столбцы. Кликаем по​

​ ячейку колонки, отпускаем​ в статье «Количество​ закрепить в Excel​Excel​ F5 или сочетание​.​ «А» английская на​ как несмежные ячейки,​ клавишу «Ctrl», удерживая​ Excel» тут.​ Советы о том,​ 1 To Sheets.Count​ Then​With ActiveWorkbook​ выделение целой строки​ курсором с зажатой​ первому элементу в​ мышку и жмем​ выделенных строк в​

​ заголовок, строку, ячейку,​

Каким образом можно выделить весь лист в Excel

​.​​ клавиш «Ctrl» +​

​Как выделить все листы​
​ любой раскладке клавиатуры.​ диапазоны.​ её нажатой, выделяем​

​Вариантов выделения в​​ как устранить эту​ Step 1​arr(i) = Worksheets(i).Name​Application.DisplayAlerts = False​ или всего листа​ левой кнопкой мыши​

​ столбце, а затем​​ на комбинацию клавиш​

​ Excel».​​ ссылку, т.д.»​В Excel есть​ «G». Выйдет окно​ в Excel.​

​ Подробнее о сочетаниях​​Или выделяем -​ следующие диапазоны.​ таблице много, обращайте​ проблему, см. в​If Sheets(i).Name <>​End If​For i =​ – другим.​

Выделение нескольких листов (Макросы/Sub)

​ определенную область на​​ набираем сочетание клавиш​Ctrl + Shift +​Для того, чтобы производить​Как выделить дату в​ несколько способов выделить​
​ «Переход» Внизу этого​
​Несколько вариантов выделения​ клавиш смотрите в​ как столбцы и​Как выделить определённые ячейки​ внимание на перечень​ публикации сообщества под​ «БазаДанных» And Sheets(i).Name​
​Next​

​ .Sheets.Count To 4​​Автор: Максим Тютюшев​ листе.​Ctrl + Shift +​

​ стрелка вниз​​ различные действия с​
​Excel​
​ дубликаты в таблице.​
​ окна нажимаем на​
​ листов смежных, несмежных,​ статье «Горячие клавиши​
​ строки, устанавливая курсор​
​ в​
​ статей в конце​
​ названием Как предотвратить​
​ <> «Просто лист»​

​Sheets(arr).Select​​ Step -1​​Vusht​​Диапазон можно выделить, зажав​ стрелка вправо​ ​. При этом выделится​
​ содержимым ячеек 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​Не успел(((​ комбинации клавиш.​
​ верхней левой и​
​ случае является наличие​
​ выполнения данной процедуры​ Прежде всего, такое​
​ можно разными способами,​ можно не только​ выделить ячейки по​ нескольких листах» тут.​ выделяются ячейки, не​ нажимаем и удерживаем​выделить не смежные ячейки​ активной ячейки в​
​ с формулами, сразу​Next​For i =​Hugo​Saturn​ нижней правой ячейке​
​ данных во всех​ является отсутствие пустых​
​ разнообразие связано с​
​ в зависимости от​
​ выделить, удалить, но,​
​ другим параметрам –​
​Как выделить все картинки​
​ входящие в таблицу,​
​ нажатой клавишу «Ctrl».​
​– ячейки, расположенные​ таблице для дальнейших​ все картинки, листы​Sheets(arr).Select​ 1 To Sheets.Count​

​: Я исходил из​​: Ctrl+A — самый​ выделяемой области. Либо​ ячейках строчки.​ ячеек в данной​ тем, что существует​ поставленной задачи.​ их можно сначала​ отличия по столбцам,​ в​ но расположенные рядом​Как выделить таблицу в​ НЕ рядом, то​

​ действий.​​, т.д., в зависимости​Kamikadze_N​If 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. Tewalt's user avatar

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

ExcelExpert's user avatar

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's user avatar

June7

19.5k8 gold badges24 silver badges33 bronze badges

answered Jul 30, 2013 at 19:11

chancea's user avatar

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

user4791681's user avatar

you have a few options here:

  1. Using the UsedRange property
  2. find the last row and column used
  3. 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:

  1. Find the last cell containing any value
  2. select cell(1,1) all the way to the last cell

Faisal Mehmood's user avatar

answered Jul 30, 2013 at 20:32

Derek Cheng's user avatar

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

Bob the Builder's user avatar

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.

Community's user avatar

answered Jul 30, 2013 at 19:25

MakeCents's user avatar

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 Amer's user avatar

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

FreeSoftwareServers's user avatar

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

Lifygen's user avatar

Maybe this might work:

Sh.Range(«A1», Sh.Range(«A» & Rows.Count).End(xlUp))

answered Oct 31, 2014 at 18:38

Sarah's user avatar

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

Pavlin Todorov's user avatar

Я нашел аналогичное решение этого вопроса в 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 теперь является объектом диапазона, который содержит весь рабочий лист


у вас есть несколько вариантов здесь:

  1. использование свойства UsedRange
  2. найти последнюю строку и столбец, используемый
  3. используйте имитацию 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. найти последнюю ячейку, содержащую любое значение
  2. выберите ячейку (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.

Что делает макрос: Макрос может удалить все листы, кроме активного рабочего листа.

Содержание

  1. Как макрос работает
  2. Код макроса
  3. Как работает код
  4. Как использовать

Как макрос работает

Этот макрос с помощью цикла пробегает по всем рабочим листам и проверяет на соответствие имени каждого рабочего листа, имя активного листа. Каждый раз, когда имя не совпадает, он удаляет лист. Обратите внимание на использование метода 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

Как работает код

  1. Объявляем переменную WS, которая будет хранить имя каждого листа.
  2. На шаге 2 макрос начинает цикл по всем рабочим листам в этой книге. Существует разница между ThisWorkbook и ActiveWorkbook. Объект ThisWorkbook относится к книге, в которой написан код макроса. ActiveWorkbook относится к книге, которая в данный момент активна. Они часто возвращают один и тот же объект, но, если рабочая книга работает, а код находится не в активной рабочей книге, они возвращают различные объекты. В этом случае, мы не хотим рисковать удалением листов в других книгах, так что мы используем ThisWorkbook.
  3. На этом этапе сравниваем активное имя листа с листом, который определяется с помощью цикла.
  4. Если имена листов различны, макрокоманда удаляет лист. Мы используем DisplayAlerts, чтобы подавить любые проверки подтверждения из Excel (чтобы не появлялось системное сообщение с вопросом: «Вы действительно хотите удалить лист?»)
  5. На шаге 5, переходим к следующему листу книги и повторяем проверку снова. После того, как пробежались по всем листам, макрос завершается.

Как использовать

Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код во вновь созданном модуле.

Обратите внимание, что при использовании ThisWorkbook в макросе вместо ActiveWorkbook, вы не сможете запустить макрос из личных макросов. Это потому, что ThisWorkbook относится к Personal Macro Workbook, а не рабочей книги, к которому следует применить макрос.

Понравилась статья? Поделить с друзьями:
  • Excel макрос имя столбца
  • Excel макрос или activex
  • Excel макрос изменяющий цвет ячейки
  • Excel макрос изменить ячейку
  • Excel макрос изменение шрифта