Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Четыре макроса из листов в одной кнопке - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Четыре макроса из листов в одной кнопке (Макросы/Sub)
Четыре макроса из листов в одной кнопке
Anis625 Дата: Понедельник, 11.03.2019, 23:42 | Сообщение № 1
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

Excel 2013
Добрый вечер, участникам форума!

Не первый раз соединяю макросы в одной кнопке не было проблем. Макросы на четырех листах по скрытию пустых строк (алгоритм и диапазон на листах разный) по отдельности работают отлично. Соединяю так:
[vba]
Код
Sub CommandButton1_Click()
    Call tt_karta
    Call tt_monitor_kp
    Call tt_ocenka
    Call tt_ocenka_kp
End Sub
[/vba]

И так:
[vba]
Код
Sub CommandButton1_Click()
    Call Sheets("Карта КП_год").tt_karta
    Call Sheets("Мониторинг КП_ежекв").tt_monitor_kp
    Call Sheets("Оценка").tt_ocenka
    Call Sheets("Оценка проектов (по году)").tt_ocenka_kp
End Sub
[/vba]

И в модуль размещал и в отдельный лист. Ругается макрос =( Подскажите, пожалуйста, где ошибаюсь?
 
Ответить
СообщениеДобрый вечер, участникам форума!

Не первый раз соединяю макросы в одной кнопке не было проблем. Макросы на четырех листах по скрытию пустых строк (алгоритм и диапазон на листах разный) по отдельности работают отлично. Соединяю так:
[vba]
Код
Sub CommandButton1_Click()
    Call tt_karta
    Call tt_monitor_kp
    Call tt_ocenka
    Call tt_ocenka_kp
End Sub
[/vba]

И так:
[vba]
Код
Sub CommandButton1_Click()
    Call Sheets("Карта КП_год").tt_karta
    Call Sheets("Мониторинг КП_ежекв").tt_monitor_kp
    Call Sheets("Оценка").tt_ocenka
    Call Sheets("Оценка проектов (по году)").tt_ocenka_kp
End Sub
[/vba]

И в модуль размещал и в отдельный лист. Ругается макрос =( Подскажите, пожалуйста, где ошибаюсь?

Автор - Anis625
Дата добавления - 11.03.2019 в 23:42
gling Дата: Вторник, 12.03.2019, 00:02 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2523
Репутация: 678 ±
Замечаний: 0% ±

2010
Здравствуйте.
Ругается макрос

А на что ругается? Нужно же и макрос видеть. Может вы запускаете его с одного листа в котором нет данных, а в макросе прописано взять данные с активного листа, вот он и матерится, типа "что взять если ничего нет?"


ЯД-41001506838083
 
Ответить
СообщениеЗдравствуйте.
Ругается макрос

А на что ругается? Нужно же и макрос видеть. Может вы запускаете его с одного листа в котором нет данных, а в макросе прописано взять данные с активного листа, вот он и матерится, типа "что взять если ничего нет?"

Автор - gling
Дата добавления - 12.03.2019 в 00:02
Anis625 Дата: Вторник, 12.03.2019, 00:13 | Сообщение № 3
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

Excel 2013
gling,

Все макросы на листах по типу такого (макрос от Boroda, за что ему огромная благодарность):
[vba]
Код
Sub tt_karta()
    Cells.Select
    Cells.EntireRow.AutoFit
    Range("B1").Select
    Application.ScreenUpdating = 0 'отключаем обновление экрана
    r1_ = Cells(1).SpecialCells(xlLastCell).Row 'самая-самая последняя рабочая  строка в файле (у нас 26) - это как на листе нажать Контрл Енд
    Range("10:" & r1_).EntireRow.Hidden = False 'открываем все строки
    r_ = Cells(Rows.Count, 1).End(3).Row 'а вот теперь последняя строка в столбце В
    For Each c In Range("A10:B" & r_)
        If c = "" Then
            c.Rows.EntireRow.Hidden = True
        End If
    Next
    Application.ScreenUpdating = 1 'включаем обновление экрана
End Sub
[/vba]

Все макросы размещены в каждом листе отдельно
 
Ответить
Сообщениеgling,

Все макросы на листах по типу такого (макрос от Boroda, за что ему огромная благодарность):
[vba]
Код
Sub tt_karta()
    Cells.Select
    Cells.EntireRow.AutoFit
    Range("B1").Select
    Application.ScreenUpdating = 0 'отключаем обновление экрана
    r1_ = Cells(1).SpecialCells(xlLastCell).Row 'самая-самая последняя рабочая  строка в файле (у нас 26) - это как на листе нажать Контрл Енд
    Range("10:" & r1_).EntireRow.Hidden = False 'открываем все строки
    r_ = Cells(Rows.Count, 1).End(3).Row 'а вот теперь последняя строка в столбце В
    For Each c In Range("A10:B" & r_)
        If c = "" Then
            c.Rows.EntireRow.Hidden = True
        End If
    Next
    Application.ScreenUpdating = 1 'включаем обновление экрана
End Sub
[/vba]

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

Автор - Anis625
Дата добавления - 12.03.2019 в 00:13
Anis625 Дата: Вторник, 12.03.2019, 00:18 | Сообщение № 4
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

Excel 2013
gling,

"Subscript out range" при размещении кода
[vba]
Код
Sub CommandButton1_Click()
    Call Sheets("Карта КП_год").tt_karta
    Call Sheets("Мониторинг КП_ежекв").tt_monitor_kp
    Call Sheets("Оценка").tt_ocenka
    Call Sheets("Оценка проектов (по году)").tt_ocenka_kp
End Sub
[/vba]
В один из листов книги


Сообщение отредактировал Anis625 - Вторник, 12.03.2019, 00:20
 
Ответить
Сообщениеgling,

"Subscript out range" при размещении кода
[vba]
Код
Sub CommandButton1_Click()
    Call Sheets("Карта КП_год").tt_karta
    Call Sheets("Мониторинг КП_ежекв").tt_monitor_kp
    Call Sheets("Оценка").tt_ocenka
    Call Sheets("Оценка проектов (по году)").tt_ocenka_kp
End Sub
[/vba]
В один из листов книги

Автор - Anis625
Дата добавления - 12.03.2019 в 00:18
Anis625 Дата: Вторник, 12.03.2019, 00:21 | Сообщение № 5
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

Excel 2013
400 пишет
 
Ответить
Сообщение400 пишет

Автор - Anis625
Дата добавления - 12.03.2019 в 00:21
Anis625 Дата: Вторник, 12.03.2019, 00:22 | Сообщение № 6
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

Excel 2013
Если в модуле записать пишет Метод Select из класса Range завершен не верно
 
Ответить
СообщениеЕсли в модуле записать пишет Метод Select из класса Range завершен не верно

Автор - Anis625
Дата добавления - 12.03.2019 в 00:22
RAN Дата: Вторник, 12.03.2019, 00:35 | Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Мне одному кажется, что вы просите посмотреть, нет ли у вас на том месте, на котором сидят, чирья, но штаны снимать не желаете?


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеМне одному кажется, что вы просите посмотреть, нет ли у вас на том месте, на котором сидят, чирья, но штаны снимать не желаете?

Автор - RAN
Дата добавления - 12.03.2019 в 00:35
gling Дата: Вторник, 12.03.2019, 00:37 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2523
Репутация: 678 ±
Замечаний: 0% ±

2010
О чем и писал
Цитата
Cells.Select
какого листа? и чтобы выделить ячейку нужно перейти на этот лист, а переходы не прописаны. Уберите макросы с листов в обычный модуль, можно все в один. Оберните каждый в With с указанием нужного листа и избавьтесь от Select.


ЯД-41001506838083
 
Ответить
СообщениеО чем и писал
Цитата
Cells.Select
какого листа? и чтобы выделить ячейку нужно перейти на этот лист, а переходы не прописаны. Уберите макросы с листов в обычный модуль, можно все в один. Оберните каждый в With с указанием нужного листа и избавьтесь от Select.

Автор - gling
Дата добавления - 12.03.2019 в 00:37
Anis625 Дата: Вторник, 12.03.2019, 00:39 | Сообщение № 9
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

Excel 2013
RAN,

Огромный файл с конфиденциально информацией. Я подумал что это возможно стандартная ситуация и есть на него ответ без файла. Попробую почистить и выложить файл.
 
Ответить
СообщениеRAN,

Огромный файл с конфиденциально информацией. Я подумал что это возможно стандартная ситуация и есть на него ответ без файла. Попробую почистить и выложить файл.

Автор - Anis625
Дата добавления - 12.03.2019 в 00:39
RAN Дата: Вторник, 12.03.2019, 00:51 | Сообщение № 10
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Любую стандартную ситуацию можно запросто превратить в не стандартную. Мне кажется, это ваш случай.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеЛюбую стандартную ситуацию можно запросто превратить в не стандартную. Мне кажется, это ваш случай.

Автор - RAN
Дата добавления - 12.03.2019 в 00:51
Anis625 Дата: Вторник, 12.03.2019, 00:53 | Сообщение № 11
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

Excel 2013
RAN,
Добавил файл
К сообщению приложен файл: __2019_-1_-.xlsm (79.1 Kb)
 
Ответить
СообщениеRAN,
Добавил файл

Автор - Anis625
Дата добавления - 12.03.2019 в 00:53
Anis625 Дата: Вторник, 12.03.2019, 00:56 | Сообщение № 12
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

Excel 2013
gling,

Уберите макросы с листов в обычный модуль, можно все в один.


Убрать в модуль не могу. Эти листы формируются другим макросом из базы данных по ФИО. При переносе заданных листов в отдельный файл макросы переносятся только те которые записаны в листах. Из модулей код не переносится.
 
Ответить
Сообщениеgling,

Уберите макросы с листов в обычный модуль, можно все в один.


Убрать в модуль не могу. Эти листы формируются другим макросом из базы данных по ФИО. При переносе заданных листов в отдельный файл макросы переносятся только те которые записаны в листах. Из модулей код не переносится.

Автор - Anis625
Дата добавления - 12.03.2019 в 00:56
Anis625 Дата: Вторник, 12.03.2019, 00:58 | Сообщение № 13
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

Excel 2013
Любую стандартную ситуацию можно запросто превратить в не стандартную. Мне кажется, это ваш случай.


Те же "грабли" в общении с вами. У вас амплуа такое на данном форуме?
 
Ответить
Сообщение
Любую стандартную ситуацию можно запросто превратить в не стандартную. Мне кажется, это ваш случай.


Те же "грабли" в общении с вами. У вас амплуа такое на данном форуме?

Автор - Anis625
Дата добавления - 12.03.2019 в 00:58
Anis625 Дата: Вторник, 12.03.2019, 01:12 | Сообщение № 14
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

Excel 2013
Мне одному кажется, что вы просите посмотреть, нет ли у вас на том месте, на котором сидят, чирья, но штаны снимать не желаете?


Просьба к модераторам обратить внимание на поведение некоторых участников форума.
 
Ответить
Сообщение
Мне одному кажется, что вы просите посмотреть, нет ли у вас на том месте, на котором сидят, чирья, но штаны снимать не желаете?


Просьба к модераторам обратить внимание на поведение некоторых участников форума.

Автор - Anis625
Дата добавления - 12.03.2019 в 01:12
RAN Дата: Вторник, 12.03.2019, 01:38 | Сообщение № 15
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
В каждом из этих 4 макросов 1 и 3 строки лишние.
Если их удалить, все заработает.

Попытка использования не правильно написанных макросов - частный случай превращения ситуации в не стандартную.


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

Сообщение отредактировал RAN - Вторник, 12.03.2019, 01:51
 
Ответить
СообщениеВ каждом из этих 4 макросов 1 и 3 строки лишние.
Если их удалить, все заработает.

Попытка использования не правильно написанных макросов - частный случай превращения ситуации в не стандартную.

Автор - RAN
Дата добавления - 12.03.2019 в 01:38
_Boroda_ Дата: Вторник, 12.03.2019, 09:38 | Сообщение № 16
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Anis625, что ж Вы меня так позорите-то?
макрос от Boroda, за что ему огромная благодарность):
Sub tt_karta()
    Cells.Select'!!! Этого я точно не писал
    Cells.EntireRow.AutoFit' И это зачем, если мы ниже то же самое делаем?
    Range("B1").Select'!!! И этого тоже не писал

Когда пишете, что "Макрос от" кого-то (это правильно, полностью поддерживаю), то нужно и писать, что Вы его дополнили/изменили в такой-то части. А то что люди подумают?

RAN, формально в фразе про штаны вроде ничего оскорбительного нет, но звучит как-то не очень. Если бы тебе так написали, тебе понравилось бы? Не, я все понимаю, самому иногда хочется много чего сказать на перлы типа "Помогите, у меня Excel не работает", но как-то все-таки нужно себя в руках держать


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеAnis625, что ж Вы меня так позорите-то?
макрос от Boroda, за что ему огромная благодарность):
Sub tt_karta()
    Cells.Select'!!! Этого я точно не писал
    Cells.EntireRow.AutoFit' И это зачем, если мы ниже то же самое делаем?
    Range("B1").Select'!!! И этого тоже не писал

Когда пишете, что "Макрос от" кого-то (это правильно, полностью поддерживаю), то нужно и писать, что Вы его дополнили/изменили в такой-то части. А то что люди подумают?

RAN, формально в фразе про штаны вроде ничего оскорбительного нет, но звучит как-то не очень. Если бы тебе так написали, тебе понравилось бы? Не, я все понимаю, самому иногда хочется много чего сказать на перлы типа "Помогите, у меня Excel не работает", но как-то все-таки нужно себя в руках держать

Автор - _Boroda_
Дата добавления - 12.03.2019 в 09:38
RAN Дата: Вторник, 12.03.2019, 10:35 | Сообщение № 17
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Если бы тебе так написали

Я бы понял правильно.
А то что люди подумают?

Что ты такого написать не мог.


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
Если бы тебе так написали

Я бы понял правильно.
А то что люди подумают?

Что ты такого написать не мог.

Автор - RAN
Дата добавления - 12.03.2019 в 10:35
Anis625 Дата: Вторник, 12.03.2019, 21:32 | Сообщение № 18
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

Excel 2013
то нужно и писать, что Вы его дополнили/изменили в такой-то части. А то что люди подумают?


Согласен, учту. К сожалению, пока некоторые свои действия не совсем понимаю как влияют на дальнейшие результаты, как в данной ситуации.

Поставил цель, обучиться написанию макросов.
 
Ответить
Сообщение
то нужно и писать, что Вы его дополнили/изменили в такой-то части. А то что люди подумают?


Согласен, учту. К сожалению, пока некоторые свои действия не совсем понимаю как влияют на дальнейшие результаты, как в данной ситуации.

Поставил цель, обучиться написанию макросов.

Автор - Anis625
Дата добавления - 12.03.2019 в 21:32
Anis625 Дата: Вторник, 12.03.2019, 21:36 | Сообщение № 19
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

Excel 2013
_Boroda_,

Мне одному кажется, что вы просите посмотреть, нет ли у вас на том месте, на котором сидят, чирья, но штаны снимать не желаете?


Я думаю это нарушение п.5d Правил форума - выражаться нецензурно, хамить, допускать неуважительные высказывания относительно посетителей форума;
 
Ответить
Сообщение_Boroda_,

Мне одному кажется, что вы просите посмотреть, нет ли у вас на том месте, на котором сидят, чирья, но штаны снимать не желаете?


Я думаю это нарушение п.5d Правил форума - выражаться нецензурно, хамить, допускать неуважительные высказывания относительно посетителей форума;

Автор - Anis625
Дата добавления - 12.03.2019 в 21:36
_Boroda_ Дата: Вторник, 12.03.2019, 21:45 | Сообщение № 20
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
пока некоторые свои действия не совсем понимаю как влияют на дальнейшие результаты
Давайте разберемся
Пример с пояснениями на пальцах
1. Макрос работает на активном листе - можно написать ЭтотЛист.Ячейка.Селект (выделить). А почему бы и нет - мы видим лист на мониторе и можем на нем выделить какую-то ячейку
2. Макрос работает на произвольном (не активном на момент запуска макроса) листе - НЕЛЬЗЯ писать Селект (вернее писать-то можно, никто не запрещает, но работать не будет). Мы не видим лист на экране (может, он вообще скрыт), как мы там можем ячейку выделить?

И вообще Селектами нужно пользоваться только по крайней необходимости, которая ну ооочень редко возникает при грамотном подходе к решению


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
пока некоторые свои действия не совсем понимаю как влияют на дальнейшие результаты
Давайте разберемся
Пример с пояснениями на пальцах
1. Макрос работает на активном листе - можно написать ЭтотЛист.Ячейка.Селект (выделить). А почему бы и нет - мы видим лист на мониторе и можем на нем выделить какую-то ячейку
2. Макрос работает на произвольном (не активном на момент запуска макроса) листе - НЕЛЬЗЯ писать Селект (вернее писать-то можно, никто не запрещает, но работать не будет). Мы не видим лист на экране (может, он вообще скрыт), как мы там можем ячейку выделить?

И вообще Селектами нужно пользоваться только по крайней необходимости, которая ну ооочень редко возникает при грамотном подходе к решению

Автор - _Boroda_
Дата добавления - 12.03.2019 в 21:45
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Четыре макроса из листов в одной кнопке (Макросы/Sub)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!