Как применить макрос сразу ко всей книге целиком? |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
SHARP Пользователь Сообщений: 154 |
#1 10.03.2017 13:32:18 Доброго времени суток
|
|
нужно понимать что Вы хотите получить от макроса Изменено: Ігор Гончаренко — 10.03.2017 14:09:11 Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
|
SHARP Пользователь Сообщений: 154 |
#3 10.03.2017 14:32:04 Если в макрос вставить
тогда он будет всегда выполняться на всех листах, а мне нужно чтобы только при сохранении. Как проверить наличии «КнопкаЗОР» на листе |
|
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
#4 10.03.2017 15:00:21
1. Вы сами просили на всех листах. |
||
SHARP Пользователь Сообщений: 154 |
Макрос «ЗАКРЫТЬ» вызывается нажатием кнопки активного листа и выполняется только на текущем листе |
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
#6 10.03.2017 15:18:14
Перебирайте листы циклом и выполняйте нужные действия для каждого листа.
вызывает недоумение: не может лист не иметь имени. |
||||
SHARP Пользователь Сообщений: 154 |
про это я писал посте #3
Выходит нужно два макроса, с перебором листов и без и других вариантов нет? |
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
Я читал #3. Зачем два макроса? Нажали на кнопку, макрос перебирает все листы, на каждом выполняет нужные операции. Проблема в чём? |
SHARP Пользователь Сообщений: 154 |
Проблема в том, что пи нажатии кнопки макрос должен выполнятся только на активном листе и мне не нужно, чтобы он перебирал другие листы и делал на них какие либо изменения. Данная задача ставиться только при сохранении книги. Изменено: SHARP — 10.03.2017 15:44:23 |
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
#10 10.03.2017 15:59:30 Если при нажатии на кнопку макрос должен делать действия только на активном листе, а при событии сохранения пройтись по всем, то я бы добавил глобальную логическую переменную и проверял её значение: например, если ИСТИНА, обработали только активный лист и вышли из процедуры. Если ЛОЖЬ — выполняется цикл.
Макрос и так переберёт ВСЕ листы. Условие перебора всех листов задаётся не строкой, которую я цитировал, а параметрами цикла. В Вашем случае с первого листа по последний. |
||
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#11 10.03.2017 16:02:49
Имена листов известны?
Можно так:
при условии, что кнопка является элементом форм или автофигурой. С ActiveX подход определения на листе иной будет, хоть общий принцип тот же. Или можно просто перебрать только нужные листы:
Изменено: The_Prist — 10.03.2017 16:05:12 Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||||||||
SHARP Пользователь Сообщений: 154 |
#12 10.03.2017 16:31:34
Я про это и спрашиваю. Я понимаю, что при разных условиях и разное решение. Решение готово, а условия построить не получается.
Все листы имеют разное название, но те, которые перебирать не надо — Известны.
у меня как раз ActiveX, но ваш код встал как влитой. Спасибо |
||||||
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
#13 10.03.2017 18:39:45 В модуль книги:
В стандартный модуль:
Имена листов, которые обрабатывать не нужно, подставьте свои. |
||||
SHARP Пользователь Сообщений: 154 |
|
assedo Пользователь Сообщений: 43 |
#15 21.07.2017 16:38:39 Доброго времени суток
он выполняется только на первом листе заранее благодарю Изменено: assedo — 21.07.2017 16:39:31 |
||
Sanja Пользователь Сообщений: 14838 |
#16 21.07.2017 16:49:50 Для ВСЕХ листов
Согласие есть продукт при полном непротивлении сторон. |
||
assedo Пользователь Сообщений: 43 |
#17 21.07.2017 16:51:08 Sanja, |
Обычно мы можем запускать макрос на листе, если есть несколько листов, которые необходимо применить этот макрос, вы должны запускать код один за другим. Есть ли другой быстрый способ запустить один и тот же макрос на нескольких листах одновременно в Excel?
Запустить или выполнить один и тот же макрос на нескольких листах одновременно с кодом VBA
Запустить или выполнить один и тот же макрос на нескольких листах одновременно с кодом VBA
Чтобы запустить макрос на нескольких листах одновременно, не запуская его по одному, вы можете применить следующий код VBA, сделайте следующее:
1. Удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.
2. Нажмите Вставить > Модули, и вставьте следующий макрос в Модули Окно.
Код VBA: запускать один и тот же макрос на нескольких листах одновременно:
Sub Dosomething()
Dim xSh As Worksheet
Application.ScreenUpdating = False
For Each xSh In Worksheets
xSh.Select
Call RunCode
Next
Application.ScreenUpdating = True
End Sub
Sub RunCode()
'your code here
End Sub
Внимание: В приведенном выше коде скопируйте и вставьте свой собственный код без ниже заголовок и End Sub нижний колонтитул между Дополнительный код выполнения () и End Sub скрипты. Смотрите скриншот:
3. Затем поместите курсор на макрос первой части и нажмите F5 нажмите клавишу для запуска кода, и ваш код макроса будет применяться к одному листу.
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Комментарии (13)
Оценок пока нет. Оцените первым!
Возможно, Lena, Вам нужно, чтобы на всех листах происходили одинаковые изменения? — тогда в макросе необходимо предварительно все листы книги выделить так:
Visual Basic | ||
|
Далее присвоим активной ячейке (это та, что на активном листе), какое-либо значение, например, 15 и зальём её цветом:
Visual Basic | ||
|
В результате на всех листах книги, в ячейках, имеющих такой же адрес как активная, будет прописано это число. Залиты они будут одинаковым цветом. Только будте осторожны — не «затрите» важной информации: проверить исходное содержимое ячеек на неактивных листах таким образом у Вас не получится.
Автор iva, 24 апреля 2017, 19:04
Добрый день!
Пожалуйста, подскажите, как сделать, чтобы этот макрос работал на всех листах книги, а не только на активном?
Sub T()
Dim lngI As Long
Dim lngJ As Long
lngI = Cells(Rows.Count, 18).End(xlUp).Row ‘определяем строку последней заполненной ячейки в столбце R
lngJ = Cells(Rows.Count, 6).End(xlUp).Row ‘определяем строку последней заполненной ячейки в столбце F
Range(«R» & lngI).Copy Range(«R» & lngI + 1 & «:R» & lngJ)
End Sub
Администратор
- Administrator
- Сообщения: 2,254
- Записан
Sub T()
Dim sh As Worksheet
Dim lngI As Long
Dim lngJ As Long
For Each sh In Worksheets
lngI = sh.Cells(sh.Rows.Count, 18).End(xlUp).Row ‘определяем строку последней заполненной ячейки в столбце R
lngJ = sh.Cells(sh.Rows.Count, 6).End(xlUp).Row ‘определяем строку последней заполненной ячейки в столбце F
sh.Range(«R» & lngI).Copy sh.Range(«R» & lngI + 1 & «:R» & lngJ)
Next sh
End Sub
- Форум по VBA, Excel и Word
-
►
VBA, Excel -
►
VBA, макросы в Excel -
►
Excel: Макрос для всех листов книги