Как выделить все листы vba excel

 

Макс

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

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

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

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

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

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

 

Юрий М

Модератор

Сообщений: 60581
Регистрация: 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

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

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

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

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

 

Юрий М

Модератор

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

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

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

 

Hugo

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

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

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

 

Юрий М

Модератор

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

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

 

Макс

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

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

#7

27.10.2013 13:16:34

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

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

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

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

  • SelectionSheets.xlsm (17.35 КБ)

 

Юрий М

Модератор

Сообщений: 60581
Регистрация: 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 КБ)

Содержание

  1. Как вы выбираете весь лист excel с помощью Range с помощью макроса в VBA?
  2. VBA в Excel Объект Excel.Worksheet и программная работа с листами Excel средствами VBA
  3. 10.5 Коллекция Sheets и объект Worksheet, их свойства и методы
  4. Как выделить все листы в excel
  5. Как выделить все листы в excel
  6. Дополнительные сведения
  7. Как сразу удалить несколько листов (вкладок) в книге Excel?
  8. Удаление нескольких листов.
  9. Как выделить все листы в excel
  10. Дополнительные сведения
  11. Выделение ячеек в Excel: строка, столбец, диапазон и лист целиком
  12. Выделение отдельной ячейки
  13. Выделяем столбец
  14. Выделяем строку
  15. Выделяем диапазон ячеек
  16. Выделяем все ячейки листа
  17. Горячие клавиши для выделения ячеек
  18. Заключение

Как вы выбираете весь лист 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” будет обрезаться при первой записи. Я реализовал работу вокруг, но недавно нашел еще лучшую; см. код ниже, который позволяет скопировать весь набор на другой лист или идентифицировать фактический адрес (или только строки и столбцы):

Источник

VBA в Excel Объект Excel.Worksheet и программная работа с листами Excel средствами VBA

10.5 Коллекция Sheets и объект Worksheet, их свойства и методы

Объект Excel.Worksheet, программное создание, обнаружение, удаление листа Excel средствами VBA, свойства, методы и события объекта Excel.Worksheet

В Word ниже объекта Application и Document начинались уже объекты непосредственно для работы с текстом — Selection, Range и т.п. В Excel между объектом рабочей книги и ячейками есть еще один промежуточный объект — объект Worksheet (лист). Объекты Worksheet в книге объединены в коллекцию Sheets.

Чаще всего для ввода данных в Excel (напрямую или из базы данных) нам потребуется в первую очередь определиться с листом, на который пойдет ввод данных — либо просто выбрать его, либо вначале создать, а потом выбрать.

Процесс создания выглядит очень просто:

Dim oExcel As New Excel.Application ‘Запускаем Excel

oExcel.Visible = True ‘Делаем его видимым

Dim oWbk As Excel.Workbook

Set oWbk = oExcel.Workbooks.Add () ‘Создаем новую книгу

Dim oSheet As Excel.Worksheet

Set oSheet = oWbk.Worksheets.Add() ‘ Создаем новый лист

oSheet.Name = «Новый лист» ‘Присваиваем ему имя «Новый лист»

Метод Add() для коллекции Worksheets принимает несколько необязательных параметров, главная задача которых — определить, между какими существующими листами будет вставлен новый лист. Если ничего не указывать, то новый лист будет помещен самым первым.

Часто встречается и другая задача — просто найти нужный лист среди листов книги, например, если мы открыли существующую книгу. Сделать это очень просто, поскольку коллекция Worksheets умеет работать с именами листов. Ниже приведен пример, в котором мы так же запускаем Excel и создаем новую книгу, но при этом находим лист с именем «Лист1» и переименовываем его в «Новый лист»:

Dim oExcel As New Excel.Application ‘Запускаем Excel

oExcel.Visible = True ‘Делаем его видимым

Dim oWbk As Excel.Workbook

Set oWbk = oExcel.Workbooks.Add() ‘Создаем новую книгу

Dim oSheet As Excel.Worksheet

Set oSheet = oWbk.Worksheets.Item(«Лист 1») ‘ Находим Лист1

oSheet.Name = «Новый лист» ‘Присваиваем ему имя «Новый лист»

Обратите внимание, что в английской версии Excel этот код, скорее всего, не пройдет, поскольку листы там по умолчанию называются «Sheet1», «Sheet2» и т.п. Если вы в вашем коде используете имена листов по умолчанию и при этом вашей программе придется работать на компьютерах с разноязычными версиями Excel, обязательно предусмотрите дополнительные проверки или просто используйте номера листов вместо их имен.

У коллекции Sheets, помимо привычных нам свойств и методов ( Count, Item, Add(), Delete()) и свойств и методов, которые удобнее применять для объекта Worksheet ( Visible(), Copy(), Move(), PrintOut(), PrintPreview(), Select()) — поскольку все равно указывать конкретный лист — есть и один специфический метод FillAcrossSheets() — скопировать объект диапазона Range (варианты: полностью, только содержимое, только оформление) во все листы данной книги.

У объекта Worksheet — множество важных свойств и методов:

  • Cells — одно из наиболее часто используемых свойств объекта Worksheet. Работает точно так же, как и рассмотренное выше одноименное свойство объекта Application — за исключением того, что вам больше не нужно ограничиваться только активным листом. Аналогично работают свойства Columns и Rows.
  • EnableCalculation — возможность отключить автоматический пересчет значений ячеек в книге.
  • EnableSelection — возможность запретить выделять на листе: все, ничего не запрещать, или разрешить выделять только незаблокированные ячейки.
  • Next — возможность получить ссылку на следующий лист в книге. Previous — то же самое для предыдущего листа.
  • PageSetup — как и в Word, возможность получить объект PageSetup, при помощи которого можно настроить те же параметры, что и через меню Файл ->Параметры страницы.
  • свойство Protection позволяет получить объект Protection, при помощи которого можно запретить пользователю вносить изменения в лист Excel. Настройке параметров защиты также служат и другие свойства, названия которых начинаются на Protection.
  • QueryTables — исключительно важное свойство. Оно возвращает коллекцию QueryTables — набор объектов QueryTable, которые, в свою очередь, представляют данные, полученные из внешних источников (как правило, из баз данных).
  • Range — самое важное свойство объекта Worksheet. Возвращает объект Range (диапазон ячеек), который в объектной модели Excel занимает примерно такое же место, что и одноименный объект в объектной модели Word. Этот объект будет рассматриваться ниже.
  • Type — возможность определить тип данного листа. Обычно используются два типа: xlWorksheet (обычный лист) и xlChart (диаграмма).
  • UsedRange — возвращает объект Range, представляющий собой прямоугольную область, включающую все непустые ячейки. Удобно для целей копирования или форматирования.
  • Visible — возможность спрятать лист с глаз пользователя (например, если он используется для служебных целей).

Некоторые важные методы объекта Worksheet:

  • методы Activate() , Calculate(), Copy(), Paste(), Delete(), Move(), Evaluate(), Select(), SaveAs(), PrintOut(), PrintPreview(), Protect(), Unprotect()нам уже знакомы . Отличие заключается только в том, что теперь эти методы могут применяться для выбранного вами листа.
  • метод PivotTables() возвращает коллекцию очень интересных объектов PivotTable (сводная таблица), которые будут рассматриваться ниже;
  • метод Scenarios() возвращает коллекцию Scenarios, состоящую из объектов Scenario (сценарии). Сценарии — это именованные наборы вводных данных, которые можно использовать для проверки различных сценариев (разные суммы продаж, уровни налогов, расходов и т.п.)
  • SetBackgroundPicture() — возможность назначить листу фоновое изображение (естественно, желательно, чтобы оно было полупрозрачное — «водяной знак», иначе на его фоне будет трудно читать текст в ячейках).
  • ShowAllData() — показать все скрытые и отфильтрованные данные на листе.

Самое важное событие объекта Worksheet — это, конечно, Change. Существует множество практических задач, когда изменение пользователем значения ячейки должно приводить к изменению значения в ячейке другого листа/рабочей книги Excel или даже в базе данных. Другая ситуация, в которой используется это события — сложная проверка вводимого пользователем значения (например, опять-таки через обращение к базе данных). Эта событийная процедура работает со специальным параметром Target — то есть объектом Range, представляющим изменившуюся ячейку. При помощи свойств и методов объекта Range вы можете получить информацию об изменившемся значении, столбце и строке, в котором произошло изменение и т.п.

У объекта Worksheet есть еще два очень удобных события (их сильно не хватает объекту Document в Word). Это — события BeforeRightClick() и BeforeDoubleClick(). Как понятно из названия, первое событие позволяет перехватывать щелчок правой кнопкой мыши по любому месту в листе, а второе — двойной щелчок мышью. При помощи этих событий вы можете назначить свою реакцию (открытие контекстных меню, выдачу предупреждающих сообщений, переход в другой режим работы и т.п.) на действия пользователя.

Источник

Как выделить все листы в excel

Как выделить все листы в excel

Вы можете быстро выбрать один или несколько листов, щелкнув по ярлычкам листов в нижней части окна Excel. Можно ввести или изменить данные на нескольких листах одновременно, выделив и сгруппировав их. Кроме того, в Excel можно одновременно отформатировать или распечатать несколько выделенных листов.

Выполните следующие действия

Выберите ярлычок листа, который нужно изменить. Активный лист будет отличаться по цвету от остальных. В данном случае выбран Лист 4.

Если ярлычок нужного листа не виден, найдите его с помощью кнопок прокрутки листов. Добавить лист можно путем нажатия кнопки Добавить лист справа от ярлычков листов.

Несколько смежных листов

Щелкните ярлычок первого листа, а затем, удерживая нажатой клавишу SHIFT, щелкните ярлычок последнего листа в диапазоне, который требуется выделить.

На клавиатуре: сначала нажмите F6, чтобы активировать ярлычки листов. Затем с помощью клавиш СТРЕЛКА ВЛЕВО и СТРЕЛКА ВПРАВО выберите нужный лист и нажмите CTRL+SPACE для его выделения. Повторите действия со стрелками и нажатием клавиш CTRL+SPACE для выбора дополнительных листов.

Несколько несмежных листов

Щелкните ярлычок первого листа, а затем, удерживая нажатой клавишу CTRL, щелкните ярлычки других листов, которые нужно выделить.

На клавиатуре: сначала нажмите F6, чтобы активировать ярлычки листов. Затем с помощью клавиш СТРЕЛКА ВЛЕВО и СТРЕЛКА ВПРАВО выберите нужный лист и нажмите CTRL+SPACE для его выделения. Повторите действия со стрелками и нажатием клавиш CTRL+SPACE для выбора дополнительных листов.

Все листы книги

Щелкните правой кнопкой мыши ярлычок листа и выберите в контекстном меню команду Выделить все листы.

СОВЕТ: После выбора нескольких листов в заголовке в верхней части листа отображается надпись [Группа]. Чтобы отменить выделение нескольких листов книги, щелкните любой невыделенный лист. Если невыделенных листов нет, щелкните правой кнопкой мыши ярлычок выделенного листа и в контекстном меню выберите команду Разгруппировать листы.

Изменения, вносимые на активном листе, отражаются на всех выделенных листах. При внесении изменений данные заменяются не только на активном листе, но и на других (иногда пользователи забывают об этом).

Данные, скопированные или вырезанные из сгруппированных листов, нельзя вставить на другой лист, поскольку область копирования включает все слои выделенных листов (отличаясь по размеру от области вставки на отдельном листе). Перед копированием или переносом данных на другой лист убедитесь, что выделен только один лист.

Если сохранить и закрыть книгу со сгруппированными листами, при последующем открытии файла выделенные листы останутся сгруппированными.

В Excel для Интернета нельзя одновременно выбрать больше одного листа, но выбрать нужный лист очень просто.

Щелкните меню Все листы и выберите лист, который нужно открыть.

Из листов, перечисленных внизу, выберите имя листа, который нужно открыть. Чтобы увидеть те листы, которые в данный момент не видны, выполняйте прокрутку вперед и назад с помощью стрелок, расположенных рядом с меню «Все листы».

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

Как сразу удалить несколько листов (вкладок) в книге Excel?

Никогда не задавался вопросом удаления нескольких вкладок книги Excel одним действием, это действие мне всегда казалось довольно простым и интуитивно понятным, но сегодня ко мне подошел довольно грамотный коллега и спросил: «Не знаешь, как одним действием сразу удалить много листов в Excel?».

Много листов в Эксель

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

Удаление нескольких листов.

Шаг номер 1.
Выделить первый лист книги, который хотите удалить, кликнув по нему левой кнопкой мыши.

Шаг номер 2.
Зажать клавишу «Shift» на клавиатуре

Нажать клавишу Shift

Шаг номер 3.
Кликнуть на последний лист левой кнопкой мыши. (все листы между первым и последним будут выделены).

Выделение нескольких листов (ярлыков)

Шаг номер 4
Кликните правой кнопкой мыши по выделенным вкладкам (листам) и выберите из контекстного меню пункт «Удалить».

Примечание:
Если Вам необходимо удалить листы расположенные не по порядку, зажмите клавишу «ctrl» и выделяйте листы левой кнопкой мыши, не отпуская клавиши «ctrl».

Как выделить все листы в excel

Щелкая ярлычки листов в нижней части окна Excel, вы можете быстро выбрать один или несколько листов. Для одновременного ввода и изменения данных на нескольких листах можно группировать листы, выбирая несколько листов. Кроме того, в Excel можно одновременно отформатировать или распечатать несколько выделенных листов.

Выполните следующие действия

Щелкните ярлычок листа, который вы хотите изменить. На активном листе цвет будет отличаться от других листов. В этом случае Sheet4 выбран.

Если вы не видите нужную вкладку, щелкните кнопки прокрутки, чтобы перейти на вкладку. Чтобы добавить лист, нажмите кнопку добавить лист справа от ярлычков листов.

Несколько смежных листов

Щелкните ярлычок первого листа, а затем, удерживая нажатой клавишу Shift , щелкните ярлычок последнего листа, который вы хотите выделить.

С помощью клавиатуры: сначала нажмите клавишу F6 , чтобы активировать ярлычки листов. Нажимайте клавишу Стрелка влево или вправо для выбора нужного листа, и вы можете использовать сочетание клавиш Ctrl + пробел , чтобы выделить этот лист. Повторите стрелки и Ctrl + пробел , чтобы выбрать дополнительные листы.

Несколько несмежных листов

Щелкните ярлычок первого листа, а затем, удерживая нажатой клавишу CTRL , щелкните вкладки остальных листов, которые нужно выделить.

С помощью клавиатуры: сначала нажмите клавишу F6 , чтобы активировать ярлычки листов. Нажимайте клавишу Стрелка влево или вправо для выбора нужного листа, и вы можете использовать сочетание клавиш Ctrl + пробел , чтобы выделить этот лист. Повторите стрелки и Ctrl + пробел , чтобы выбрать дополнительные листы.

Все листы книги

Щелкните правой кнопкой мыши ярлычок листа и выберите пункт выделить все листы .

ПЕРО После выбора нескольких листов в заголовке в верхней части листа появится надпись [Группа] . Чтобы отменить выделение нескольких листов книги, щелкните любой невыделенный лист. Если невыделенных листов нет, щелкните правой кнопкой мыши ярлычок выделенного листа и в контекстном меню выберите команду Разгруппировать листы.

Данные, которые вы вводите или редактируете на активном листе, отображаются на всех выбранных листах. Эти изменения могут заменять данные на активном листе и (возможно, непреднамеренно) на других выбранных листах.

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

Если сохранить и закрыть книгу со сгруппированными листами, при последующем открытии файла выделенные листы останутся сгруппированными.

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community, попросить помощи в сообществе Answers community, а также предложить новую функцию или улучшение на веб-сайте Excel User Voice.

Примечание: Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Была ли информация полезной? Для удобства также приводим ссылку на оригинал (на английском языке).

Выделение ячеек в Excel: строка, столбец, диапазон и лист целиком

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

Выделение отдельной ячейки

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

Чтобы отметить нужную ячейку можно использовать навигационные клавиши на клавиатуре: “вправо”, “влево”, вверх”, “вниз”.

Выделяем столбец

Выделить столбец в Эксель можно несколькими способами:

  1. Зажав левую кнопку мыши тянем ее указатель от первой ячейки до последней, после чего отпускаем кнопку. Действие можно выполнять как сверху вниз (первая ячейка – самая верхняя, последняя – самая нижняя), так и снизу вверх (первая ячейка – самая нижняя, последняя – самая верхняя).
  2. Щелкаем по первой ячейке столбца, далее зажав клавишу Shift, кликаем по последней ячейке столбца, после чего отпускаем клавишу Shift. Как и в первом способе, выделение можно выполнять в обе стороны: и вверх, и вниз.
  3. Также, вместо мыши вместе с Shift мы можем использовать клавиши навигации. Щелкаем по первой ячейке столбца, далее зажимаем Shift, после чего нажимаем клавишу вверх (или вниз в зависимости от того, какую ячейку мы выбрали в качестве первой – самую верхнюю или самую нижнюю) ровно столько раз, сколько ячеек мы хотим добавить в выделяемый диапазон. Одно нажатие на клавишу – одна ячейка. После того, как все нужные элементы отмечены, отпускаем клавишу Shift.
  4. Кликаем по первой ячейка столбца, после чего нажимаем сочетание клавиш Ctrl+Shif+стрелка вниз. В результате будет выделен весь столбец, охватив все ячейки, в которых есть данные. Если мы хотим выполнить выделение снизу вверх, то соответственно, нажимаем комбинацию Ctrl+Shif+стрелка вверх, предварительно встав в самую нижнюю ячейку.Тут есть один нюанс. При использовании данного способа нужно убедиться в том, что в отмечаемом столбце нет пустых элементов, иначе выделение будет произведено лишь до первой незаполненной ячейки.
  5. Когда вместо выделения столбца таблицы нужно отметить весь столбец книги, щелкаем по его обозначению на координатной панели (курсор должен изменить свой привычный вид на стрелку, направленную вниз):
  6. В случае, когда требуется одновременное выделение нескольких столбцов книги, расположенных подряд, зажав левую кнопку мыши проводим курсором по всем нужным наименованиям столбцов на координатной панели.
  7. Также для этих целей можно воспользоваться клавишей Shift. Щелкаем по первому столбцу на панели координат, затем, зажав клавишу Shift, кликаем по последнему, после чего отпускаем клавишу.
  8. В случаях, когда столбцы расположены не подряд, зажав клавишу Ctrl на клавиатуре щелкаем на координатной панели по наименованиям всех нужных столбцов, после чего отпускаем клавишу.

Выделяем строку

По такому же алгоритму производится выделение строк в Excel. Выполнить это можно разными способами:

  1. Чтобы выделить одну строку в таблице, зажав левую кнопку мыши, проходим по всем нужным ячейкам (слева направо или наоборот), после чего отпускаем кнопку.
  2. Кликаем по первой ячейки строки, затем, зажав клавишу Shift, щелкаем по последней ячейке, и отпускаем клавишу. Выполнять данную процедуру можно в обе стороны.
  3. Совместно с клавишей Shift вместо левой кнопки мыши можно использовать клавиши навигации. Кликаем по первой ячейке строки, зажимаем клавишу Shift и жмем клавишу вправо (или влево, в зависимости от того, какую ячейку мы выбрали в качестве первой – самую левую или самую правую). При таком выделении одно нажатие навигационной клавиши равно одной выделенной ячейке. Как только мы выделили все требуемые элементы, можно опускать клавишу Shift.
  4. Щелкаем по первой ячейке строки, затем жмем сочетание клавиш Ctrl+Shif+стрелка вправо.Таким образом, будет выделена вся строка с охватом всех заполненных ячеек, но с важной оговоркой – выделение будет выполнено до первой пустой ячейки. Если мы хотим выполнить выделение справа налево, следует нажать сочетание клавиш Ctrl+Shif+стрелка влево.
  5. Чтобы выделить строку не только таблицы, но и всей книги, кликаем по ее порядковому номеру на координатной панели (вид курсора при наведении на панель должен смениться на стрелку, направленную вправо).
  6. Когда требуется одновременное выделение нескольких соседних строк, зажав левую кнопку мыши проходим на координатной панели по всем требуемым порядковым номерам.
  7. Когда нужно сразу выделить несколько соседних строк книги, можно использовать клавишу Shift. Для этого кликаем на координатной панели по номеру первой строки, затем зажимаем клавишу Shift, кликаем по последней строке и отпускаем клавишу.
  8. Когда требуется выделение строк книги, расположенных не по соседству, зажав клавишу Ctrl на клавиатуре, поочередно щелкаем по обозначениям всех нужных строк на координатной панели.

Выделяем диапазон ячеек

В данной процедуре как и в тех, что были описаны ранее, нет ничего сложного, и она также выполняется разными способами:

  1. Зажав левую кнопку мыши проходим по всем ячейкам требуемой области, двигаясь по диагонали:
    • от самой верхней левой ячейки до самой нижней правой
    • от самой нижней правой ячейки до самой верхней левой
    • от самой верхней правой ячейки до самой нижней левой
    • от самой нижней левой ячейки до самой верхней правой
  2. Зажав клавишу Shift, кликаем по первой, а затем – по последней ячейкам требуемого диапазона. Направления выделения – те же, что и в первом способе.
  3. Встаем в первую ячейку требуемого диапазона, и зажав клавишу Shift, используем клавиши для навигации на клавиатуре, чтобы “дойти” таким образом до последней ячейки.
  4. Если нужно одновременно выделить как отдельные ячейки, так и диапазоны, причем, находящиеся не рядом, зажимаем клавишу Ctrl и левой кнопкой мыши выделяем требуемые элементы.

Выделяем все ячейки листа

Чтобы осуществить данную задачу, можно воспользоваться двумя разными способами:

  1. Щелкаем по небольшому треугольнику, направленному по диагонали вправо вниз, который расположен на пересечении координатных панелей. В результате будут выделены все элементы книги.
  2. Также можно применить горячие клавиши – Ctrl+A. Однако, тут есть один нюанс. Прежде, чем нажимать данную комбинацию, нужно перейти в любую ячейку за пределами таблицы. Если же мы будем находиться в пределах таблицы, то нажав на клавиши Ctrl+A, мы сначала выделим все ячейки именно самой таблицы. И только повторное нажатие комбинации приведет к выделению всего листа.

Горячие клавиши для выделения ячеек

Ниже приведен перечень комбинаций (помимо тех, что ранее уже были рассмотрены), пользуясь которыми можно производить выделение элементов в таблице:

  • Ctrl+Shift+End – выделение элементов с перемещением в самую первую ячейку листа;
  • Ctrl+Shift+Home – выделение элементов с перемещением до последней используемой ячейки;
  • Ctrl+End – выделение последней используемой ячейки;
  • Ctrl+Home – выделение первой ячейки с данными.

Ознакомиться с более расширенным список комбинаций клавиш вы можете в нашей статье – “Горячие клавиши в Эксель“.

Заключение

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

Источник

Apkaxa

0 / 0 / 0

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

Сообщений: 23

1

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

24.05.2011, 12:17. Показов 11192. Ответов 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, Огромное спасибо!

 

Ответить

Вопрос:

Я нашел аналогичное решение этого вопроса в С#… См. Ссылку ниже

Как выделить все ячейки на листе в Excel.Range объект С#?

У кого-нибудь есть фрагмент, чтобы сделать это в VBA? Я не очень знаком с VBA, так что это было бы полезно. Вот что у меня так далеко…

Я обычно выбираю данные, используя “Ctrl + стрелка над стрелкой, стрелка вниз”, чтобы выделить весь диапазон ячеек. Когда я запускаю это в макросе, он кодирует 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

редактировать: есть другие части, где я мог бы использовать тот же код, но диапазон, скажем, “C3: конец строк и столбцов”. В VBA есть способ получить местоположение последней ячейки в документе?

Спасибо!

Лучший ответ:

Я считаю, что вы хотите найти текущую область A1 и окружающих клеток – не обязательно все ячейки на листе.
Если так – просто используйте…
Range ( “A1” ). CurrentRegion

Ответ №1

Вы можете просто использовать cells.select, чтобы выбрать ячейки all на листе. Вы можете получить действительный адрес, указав Range(Cells.Address).

Если вы хотите найти последний Used Range, где вы внесли некоторые изменения форматирования или ввели значение, вы можете вызвать ActiveSheet.UsedRange и выбрать его там. Надеюсь, что поможет

Ответ №2

вы можете использовать все ячейки как объект:

Dim x as Range
Set x = Worksheets("Sheet name").Cells

X теперь является объектом диапазона, который содержит весь рабочий лист

Ответ №3

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

  • Использование свойства UsedRange
  • найдите последнюю используемую строку и столбец
  • используйте мимику сдвига и сдвига вправо

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

Вот как вы это сделаете, используя свойство 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) до последней ячейки

Ответ №4

Я бы рекомендовал записывать макрос, например, найденный в этом сообщении;

макрос 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 = до номера строки после окончания ваших данных. Это также можно использовать для столбца, а затем вы можете использовать что-то вроде Cells (C, R). Выберите, если вы сделали C представление столбца.

Ответ №5

Вот то, что я использовал, я знаю, что это может использовать некоторые усовершенствования, но я думаю, что это поможет другим…

''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

Ответ №6

Возможно, это может сработать:

Sh.Range( “A1”, Sh.Range( “A” и Rows.Count).End(xlUp))

Ответ №7

Обращаясь к самому первому вопросу, я изучаю то же самое.
Результат, который я получаю, записывая макрос, начинается с выбора ячейки A76:

Sub find_last_row()
Range("A76").Select
Range(Selection, Selection.End(xlDown)).Select
End Sub

Ответ №8

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)

Ответ №9

Другой способ выбора всех ячеек в диапазоне, если данные непрерывны, состоит в использовании Range("A1", Range("A1").End(xlDown).End(xlToRight)).Select.

Ответ №10

Я обнаружил, что метод “.UsedRange” на рабочем листе во многих случаях лучше для решения этой проблемы. Я боролся с проблемой усечения, которая является нормальным поведением метода .CurrentRegion. Использование [Worksheets (“Sheet1”). Range (“A1”). CurrentRegion] не дает желаемых результатов, когда рабочий лист состоит из одного столбца с пробелами в строках (и пробелы требуются). В этом случае “.CurrentRegion” будет обрезаться при первой записи. Я реализовал работу вокруг, но недавно нашел еще лучшую; см. код ниже, который позволяет скопировать весь набор на другой лист или идентифицировать фактический адрес (или только строки и столбцы):

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

Понравилась статья? Поделить с друзьями:
  • Как выделить все значения в колонке excel
  • Как выделить все заполненные ячейки в таблице excel
  • Как выделить все заполненные ячейки в столбце excel
  • Как выделить все заполненные строки в excel
  • Как выделить все дубликаты в excel