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

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

Всем привет!
Есть вот такой макрос

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub GetIt()
FullPath = Application.GetOpenFilename
MainBook = ThisWorkbook.Name
i = InStrRev(FullPath, "") 
Name = Mid(FullPath, i + 1)
Folder = Left(FullPath, i - 1)
    Application.DisplayAlerts = 0     
 
Workbooks.Open Filename:=FullPath
 
Workbooks(Name).Worksheets("Имя листа").Range("B1:AT666").Copy
 
Workbooks(MainBook).Activate
 
ActiveWorkbook.Worksheets("Лист1").Range("A1").Select
ActiveSheet.Paste
 
Workbooks(Name).Close
 
End Sub

Он открывает диалоговое окно, вы выбираете другую электронную таблицу, он из нее копирует данные с листа «Имя листа» с ячеек B1:AT666 в ту книгу, с которой вы запустили макрос, начиная с ячейки A1.

Момент заключается в том что имена книг (которую вы пытаетесь открыть и ваша основная) загоняются в переменные MainBook и Name, а вот имя листа которое находится в книге, которую вы пытаетесь открыть записано вручную в строке 11.

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

Вот собственно и вопрос, как открыть это диалоговое окно, выбрать лист и САМОЕ главное занести название выбранного листа в переменную, чтобы в строке номер 11 , вместо «Имя листа» можно было бы написать имя этой переменной?

Добавлено через 12 минут
Закомментировал подробно код

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub GetIt()
FullPath = Application.GetOpenFilename 'Окно для выбора файла. Путь к файлу загоняется в переменную FullPath
MainBook = ThisWorkbook.Name 'Вносим в переменную MainBook название книги в которой вы запустили макрос
i = InStrRev(FullPath, "") 'в переменную i загоняется путь с FullPath с маркировкой ПОСЛЕДНЕГО разделителя
Name = Mid(FullPath, i + 1) 'эта маркировка позволяет нам выбрать нужные данные из строки. здесь мы забираем все что лежит после него, то есть имя книги и вносим в переменную Name
Folder = Left(FullPath, i - 1) 'тут мы забираем все что находится в строке ДО слэша, то есть путь к папке и заносим в переменную Folder (В этом макросе в дальнейшем эта переменная не используется)
    Application.DisplayAlerts = 0  'Не выводить предупреждения
 
Workbooks.Open Filename:=FullPath 'Открыть книгу по адресу FullPath
 
Workbooks(Name).Worksheets("Имя листа").Range("B1:AT666").Copy 'В книге по имени Name с листа "Имя листа" с области B1:AT666 скопировать данные
 
Workbooks(MainBook).Activate 'Выбрать вашу основную книгу (с которой запускался макрос)
  
ActiveWorkbook.Worksheets("Лист1").Range("A1").Select 'выбрать в основной книге "Лист 1" и выбрать ячейку A1
ActiveSheet.Paste 'Вставить данные
 
Workbooks(Name).Close 'Закрыть книгу, которую открывали через диалоговое окно
 
End Sub

Содержание

  • ActiveSheet
  • Выбранные листы против ActiveSheet
  • Выберите рабочий лист
  • Дополнительные примеры активации / выбора листов

В этой статье будет обсуждаться объект ActiveSheet в VBA. Также будет обсуждаться, как активировать, выбирать и переходить к рабочим листам (и многое другое). Прочтите наше полное руководство по рабочим листам VBA для получения дополнительной информации о работе с рабочими листами в VBA.

В VBA ActiveSheet относится к текущему активному рабочему листу. Одновременно может быть активен только один лист.

Активировать рабочий лист (настройка ActiveSheet)

Чтобы установить ActiveSheet, используйте Worksheet.Activate:

1 Рабочие листы («Ввод»). Активировать

Команда «Активировать лист» фактически «перейдет» к листу, изменив видимый лист.

В приведенном выше примере используется имя листа (вкладка). Вместо этого вы можете использовать кодовое имя VBA для рабочего листа:

Имя ActiveSheet

Чтобы получить имя ActiveSheet:

1 msgbox ActiveSheet.name

Выбранные листы против ActiveSheet

В любой момент времени ActiveSheet может быть только один лист. Однако можно выбрать сразу несколько листов.

Когда выбрано несколько листов, активным считается только самый верхний лист (ActiveSheet).

Выберите рабочий лист

Если вы хотите выбрать лист вместо его активации. Вместо этого используйте .Select.

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

Это выбирает рабочий лист на основе его имени вкладки листа

1 Таблицы («Ввод»). Выбрать

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

Это выбирает рабочий лист на основе его положения относительно других вкладок.

1 Рабочие листы (1) .Выбрать

Выберите рабочий лист с кодовым именем VBA

Выбор листов по имени кода может предотвратить ошибки, вызванные изменением имени листа.

Выбрать текущий лист

Чтобы выбрать текущий рабочий лист, используйте объект ActiveSheet:

Дополнительные примеры активации / выбора листов

Установите ActiveSheet на переменную

Это назначит ActiveSheet переменной объекта рабочего листа.

123 Dim ws как рабочий листУстановить ws = ActiveSheet

Изменить имя ActiveSheet

Это изменит имя ActiveSheet.

1 ActiveSheet.Name = «NewName»

С ActiveSheet

Использование оператора With позволяет оптимизировать код при работе с объектами (такими как листы или ActiveSheet).

12345 С ActiveSheet.Name = «StartFresh».Cells.Clear.Range («A1»). Value = .NameКонец с

Обратите внимание, что вам не нужно повторять ActiveSheet перед каждой строкой кода. Это может значительно сэкономить время при работе с длинным списком команд.

Перебирать выбранные листы

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

12345678 Sub GetSelectedSheetsName ()Dim ws как рабочий листДля каждого ws в ActiveWindow.SelectedSheetsMsgBox ws.NameСледующий wsКонец подписки

Перейти к следующему листу

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

12345 Если ActiveSheet.Index = Worksheets.Count, тоРабочие листы (1) .АктивироватьЕщеActiveSheet.Next.ActivateКонец, если

Вы поможете развитию сайта, поделившись страницей с друзьями

Обращение к рабочим листам Excel из кода VBA. Переименование листов, скрытие и отображение с помощью кода VBA Excel. Свойства Worksheets.Name и Worksheets.Visible.

Обращение к рабочим листам

Рабочий лист (Worksheet) принадлежит коллекции всех рабочих листов (Worksheets) книги Excel. Обратиться к листу можно как к элементу коллекции и, напрямую, по его уникальному имени.

Откройте редактор VBA и обратите внимание на вашу книгу в проводнике, где уникальные имена листов указаны без скобок, а в скобках — имена листов, отображаемые на ярлычках в открытой книге Excel. Уникальные имена листов отсортированы по алфавиту и их расположение по порядку не будет соответствовать их индексам (номерам), если листы перемещались по отношению друг к другу. Индексы листов смотрите по порядку расположения ярлычков в открытой книге. Переместили листы — изменились их индексы.

Обращение к рабочему листу в коде VBA Excel:

‘По уникальному имени

УникИмяЛиста

‘По индексу

Worksheets(N)

‘По имени листа на ярлычке

Worksheets(«Имя листа»)

  • УникИмяЛиста — уникальное имя листа, отображаемое в проводнике редактора VBA без скобок, с помощью кода VBA изменить его невозможно.
  • N — индекс листа от 1 до количества всех листов в книге, соответствует порядковому номеру ярлычка этого листа в открытой книге Excel.
  • Имя листа — имя листа, отображаемое в проводнике редактора VBA в скобках, с помощью кода VBA изменить его можно.

Количество листов в рабочей книге Excel определяется так:

‘В активной книге

Worksheets.Count

‘В любой открытой книге,

‘например, в «Книга1.xlsm»

Workbooks(«Книга1.xlsm»).Worksheets.Count

Переименование листов

В VBA Excel есть некоторые особенности в наименовании листов, так как у рабочего листа есть два свойства, связанных с именем: (Name) и Name. Откройте окно «Properties» в редакторе VBA, нажав клавишу «F4», и выделите любой лист в проводнике. Вы увидите, что в окне «Properties» свойству (Name) в скобках соответствует в проводнике уникальное имя листа без скобок, а свойству Name без скобок соответствует изменяемое имя листа в скобках. Оба имени в окне «Properties» можно редактировать.

С помощью кода VBA Excel можно редактировать только имя листа Name, отображаемое на ярлычке листа и в проводнике без скобок. Для этого используется свойство рабочего листа Worksheets.Name со следующим синтаксисом:

expression.Name

где expression — переменная, представляющая собой объект Worksheet. Смена имени осуществляется путем присвоения нового значения свойству Worksheets.Name.

Допустим, у нас есть лист с уникальным именем (Name) — Лист1, индексом — 1 и именем Name — МойЛист, которое необходимо заменить на имя — Реестр.

Лист1.Name = «Реестр»

Worksheets(1).Name = «Реестр»

Worksheets(«МойЛист»).Name = «Реестр»

Скрытие и отображение листов

Для скрытия и отображения рабочих листов в VBA Excel используется свойство Worksheet.Visible со следующим синтаксисом:

expression.Visible

где expression — переменная, представляющая собой объект Worksheet. Свойству Worksheet.Visible могут присваиваться следующие значения:

  • False — лист становится невидимым, но он будет присутствовать в списке скрытых листов, и пользователь сможет его отобразить с помощью инструментов рабочей книги Excel.
  • xlVeryHidden — лист становится супер невидимым и его не будет в списке скрытых листов, пользователь не сможет его отобразить. Актуально для Excel 2003-2016.
  • True — лист становится видимым.

Аналоги присваиваемых значений:

  • False = xlHidden = xlSheetHidden = 1
  • xlVeryHidden = xlSheetVeryHidden = 2
  • True = xlSheetVisible = -1 (константа xlVisible вызывает ошибку)

Примеры:

Лист1.Visible = xlSheetHidden

Лист2.Visible = 1

Worksheets(Worksheets.Count).Visible = xlVeryHidden

Worksheets(«МойЛист»).Visible = True

Как создать, скопировать, переместить или удалить рабочий лист с помощью кода VBA Excel, смотрите в этой статье.

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

Выберите конкретный рабочий лист в раскрывающемся списке с кодом VBA
Выберите конкретный рабочий лист на основе значения ячейки с кодом VBA
Легко создавайте индекс листов и переходите к определенному рабочему листу с помощью Kutools for Excel


Выберите конкретный рабочий лист в раскрывающемся списке с кодом VBA

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

1. Нажмите другой + F11 для открытия Microsoft Visual Basic для приложений окно.

2. в Microsoft Visual Basic для приложений дважды щелкните имя листа (рабочий лист, содержащий раскрывающийся список, из которого вы выберете имена листов) на левой панели, затем скопируйте и вставьте приведенный ниже код VBA в окно кода.

Код VBA: выберите конкретный рабочий лист в раскрывающемся списке.

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Not (Application.Intersect(Range("A2"), Target) Is Nothing) Then _
        ThisWorkbook.Sheets(Target.Value).Activate
End Sub

Внимание: Вы можете изменить «A2» на свою ячейку.

3. Нажмите другой + Q клавиши одновременно, чтобы закрыть Microsoft Visual Basic для приложений окно.

С этого момента, когда вы выбираете имя листа в раскрывающемся списке Sheet8, этот лист будет выбираться автоматически.


Выберите конкретный рабочий лист на основе значения ячейки с кодом VBA

Если вы хотите перейти к определенному листу после ввода имени листа в ячейку (ячейка A1 на листе 1), вы можете попробовать следующий код VBA.

1. Нажмите другой + F11 для открытия Microsoft Visual Basic для приложений окно.

2. в Microsoft Visual Basic для приложений окна, дважды щелкните имя листа (рабочий лист, который вы введете в имя листа) на левой панели, затем скопируйте и вставьте приведенный ниже код VBA в окно кода. Смотрите скриншот:

Код VBA: выберите конкретный лист на основе значения ячейки

Sub ActivateSheetsByValue()
    On Error Resume Next
    ThisWorkbook.Sheets(Worksheets("Sheet1").Range("A1").Value).Activate
End Sub

3. Вернитесь к рабочему листу и введите имя листа, которое вы хотите выбрать в ячейке A1, и активируйте окно кода, затем нажмите клавишу F5, чтобы запустить код.

Если ячейка A1 в Sheet1 содержит имя листа «Sheet8», после запуска кода VBA она немедленно перейдет на Sheet8.


Легко создавайте индекс листов и переходите к определенному рабочему листу с помощью Kutools for Excel

Если вы просто хотите быстро выбрать или перейти к определенному листу, вы можете попробовать Создать список имен листов полезности Kutools for Excel. С помощью этой утилиты вы можете легко создать указатель листов, а затем быстро перейти к определенному листу, щелкнув имя листа.

1. Нажмите Кутулс Плюс > Рабочий лист > Создать список имен листов. Смотрите скриншот:

2. в Создать список имен листов диалоговое окно, выберите Содержит список гиперссылок вариант в Стили указателя листов раздел; введите имя для указателя листа в Укажите имя листа для указателя листов коробка; выберите Перед всеми листами в Вставить указатель листов в раскрывающемся списке. Затем нажмите кнопку OK кнопку.

Внимание: проверить Содержит кнопки и макросы вариант, вы получите индекс листа с кнопкой макросов. Смотрите скриншот:

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

  Если вы хотите получить бесплатную пробную версию (30-день) этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.


Легко создавайте индекс листов и переходите к определенному рабочему листу с помощью Kutools for Excel


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

If your work requires navigating between worksheets a lot, activating those sheets can quickly become a hassle. Some VBA tips we’re going to cover here can help you to create a popup list of worksheets where you want them, and save yourself from the default worksheets menu. In this article, we are going to show you how to create a worksheet selection popup in Excel.

Download Workbook

Before starting

If you are new to VBA and macros — in a nutshell, VBA is a programming language for Office products. Microsoft allows users to automate tasks or modified properties of Office software. A macro, on the other hand is a set of VBA code, defining a calculation process.

Macros, or codes, should be written in modules, which are text areas in VBA’s dedicated user interface. Also, the file should be saved as an Excel Macro Enabled Workbook in XLSM format to keep the code.

You can find detailed instructions in our How to create a macro in Excel guide.

Creating a worksheet selection popup by VBA

The following code will display a worksheet selection popup at where the mouse cursor is.

Sub DisplayWorksheetPopup()

    Application.CommandBars(«Workbook Tabs»).ShowPopup

End Sub

If you run the macro right away, you will see a list of your sheets names in a popup list. Clicking on a name navigate you to that sheet.

How to create a worksheet selection popup in Excel

You can either bind this to macro to a button or shortcut to run without the VBA screen.

Binding to a button

You can add a button in your worksheet from Developer tab of the ribbon. If you are not familiar with inserting controls, you can follow the steps below:

  1. Activate the Developer tab in the ribbon
  2. Press the  Insert icon to see the controls
  3. Click on Button in Form Control section
    How to create a worksheet selection popup in Excel - Create a button
  4. Click on your worksheet where you want to place the button.
  5. Assign Macro dialog will pop up
  6. Select the macro you want run when you click the button
  7. Click OK to create the button

Once created, you can click on the button to display worksheet selection popup.

How to create a worksheet selection popup in Excel - Button

You can use an Excel illustration instead of a button as well. Use right-click context menu and select Assign Macro item.

Using a shortcut to create a worksheet selection popup

You can assign keyboard shortcuts to your custom macro as well. First you need to open the Macro window and edit the macro.

  1. Open the Macro window by clicking Macros icon in Developer
  2. Select your macro
  3. Click the Options button to open Macro Options dialog
  4. While the small textbox is active, type a character you want as a shortcut
  5. Click OK to apply the changes

Tip: All you need to is to click a single key. Excel offers either Ctrl + your key or Ctrl + Shift + your key combination based on available (not used) shortcut. For example, if you press K, Excel gives you Ctrl + Shift + K due Ctrl + K is existed.

Setting the popup location

If you are OK with the location based on where your mouse is pointing you can use the code provided as is. On the other hand, you can also set a specific location by specifying the coordinates.

You need to determine pixel coordinates after ShowPopup command. Excel counts pixels by starting from the top left. For example, to open at the target 500px left and 250px below the top left cell, use the following code:

Sub DisplayWorksheetPopup()

Application.CommandBars(«Workbook Tabs»).ShowPopup 500, 250

End Sub

How to create a worksheet selection popup in Excel - By Position

Please note that the positions start at top left of the screen, they are independent from Excel window.

A versatile code

The worksheet selection popup has a 16-items limit. If you have more than 16 sheets, you will see 15 of the worksheets and a More Sheets item which opens the Activate window. The Activate window is a dialog that lists all worksheets.

As a result, there are 2 similar windows. By the following code you can call either one according the number of sheets in your workbook:

Sub VersatileDisplayWorksheetPopup()

If ActiveWorkbook.Sheets.Count > 16 Then

Application.CommandBars(«Workbook Tabs»).Controls(«More Sheets…»).Execute

Else

Application.CommandBars(«Workbook Tabs»).ShowPopup

End If

End Sub

How to create a worksheet selection popup in Excel - Versatile code

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