Не первый раз соединяю макросы в одной кнопке не было проблем. Макросы на четырех листах по скрытию пустых строк (алгоритм и диапазон на листах разный) по отдельности работают отлично. Соединяю так: [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
А на что ругается? Нужно же и макрос видеть. Может вы запускаете его с одного листа в котором нет данных, а в макросе прописано взять данные с активного листа, вот он и матерится, типа "что взять если ничего нет?"
А на что ругается? Нужно же и макрос видеть. Может вы запускаете его с одного листа в котором нет данных, а в макросе прописано взять данные с активного листа, вот он и матерится, типа "что взять если ничего нет?"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
Sub CommandButton1_Click() Call Sheets("Карта КП_год").tt_karta Call Sheets("Мониторинг КП_ежекв").tt_monitor_kp Call Sheets("Оценка").tt_ocenka Call Sheets("Оценка проектов (по году)").tt_ocenka_kp End Sub
[/vba] В один из листов книги
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
какого листа? и чтобы выделить ячейку нужно перейти на этот лист, а переходы не прописаны. Уберите макросы с листов в обычный модуль, можно все в один. Оберните каждый в With с указанием нужного листа и избавьтесь от Select.
О чем и писал
Цитата
Cells.Select
какого листа? и чтобы выделить ячейку нужно перейти на этот лист, а переходы не прописаны. Уберите макросы с листов в обычный модуль, можно все в один. Оберните каждый в With с указанием нужного листа и избавьтесь от Select.gling
Огромный файл с конфиденциально информацией. Я подумал что это возможно стандартная ситуация и есть на него ответ без файла. Попробую почистить и выложить файл.
RAN,
Огромный файл с конфиденциально информацией. Я подумал что это возможно стандартная ситуация и есть на него ответ без файла. Попробую почистить и выложить файл.Anis625
Уберите макросы с листов в обычный модуль, можно все в один.
Убрать в модуль не могу. Эти листы формируются другим макросом из базы данных по ФИО. При переносе заданных листов в отдельный файл макросы переносятся только те которые записаны в листах. Из модулей код не переносится.
Уберите макросы с листов в обычный модуль, можно все в один.
Убрать в модуль не могу. Эти листы формируются другим макросом из базы данных по ФИО. При переносе заданных листов в отдельный файл макросы переносятся только те которые записаны в листах. Из модулей код не переносится.Anis625
макрос от Boroda, за что ему огромная благодарность): Sub tt_karta() Cells.Select'!!! Этого я точно не писал Cells.EntireRow.AutoFit' И это зачем, если мы ниже то же самое делаем? Range("B1").Select'!!! И этого тоже не писал
Когда пишете, что "Макрос от" кого-то (это правильно, полностью поддерживаю), то нужно и писать, что Вы его дополнили/изменили в такой-то части. А то что люди подумают?
RAN, формально в фразе про штаны вроде ничего оскорбительного нет, но звучит как-то не очень. Если бы тебе так написали, тебе понравилось бы? Не, я все понимаю, самому иногда хочется много чего сказать на перлы типа "Помогите, у меня Excel не работает", но как-то все-таки нужно себя в руках держать
макрос от Boroda, за что ему огромная благодарность): Sub tt_karta() Cells.Select'!!! Этого я точно не писал Cells.EntireRow.AutoFit' И это зачем, если мы ниже то же самое делаем? Range("B1").Select'!!! И этого тоже не писал
Когда пишете, что "Макрос от" кого-то (это правильно, полностью поддерживаю), то нужно и писать, что Вы его дополнили/изменили в такой-то части. А то что люди подумают?
RAN, формально в фразе про штаны вроде ничего оскорбительного нет, но звучит как-то не очень. Если бы тебе так написали, тебе понравилось бы? Не, я все понимаю, самому иногда хочется много чего сказать на перлы типа "Помогите, у меня Excel не работает", но как-то все-таки нужно себя в руках держать_Boroda_
Мне одному кажется, что вы просите посмотреть, нет ли у вас на том месте, на котором сидят, чирья, но штаны снимать не желаете?
Я думаю это нарушение п.5d Правил форума - выражаться нецензурно, хамить, допускать неуважительные высказывания относительно посетителей форума;Anis625
пока некоторые свои действия не совсем понимаю как влияют на дальнейшие результаты
Давайте разберемся Пример с пояснениями на пальцах 1. Макрос работает на активном листе - можно написать ЭтотЛист.Ячейка.Селект (выделить). А почему бы и нет - мы видим лист на мониторе и можем на нем выделить какую-то ячейку 2. Макрос работает на произвольном (не активном на момент запуска макроса) листе - НЕЛЬЗЯ писать Селект (вернее писать-то можно, никто не запрещает, но работать не будет). Мы не видим лист на экране (может, он вообще скрыт), как мы там можем ячейку выделить?
И вообще Селектами нужно пользоваться только по крайней необходимости, которая ну ооочень редко возникает при грамотном подходе к решению
пока некоторые свои действия не совсем понимаю как влияют на дальнейшие результаты
Давайте разберемся Пример с пояснениями на пальцах 1. Макрос работает на активном листе - можно написать ЭтотЛист.Ячейка.Селект (выделить). А почему бы и нет - мы видим лист на мониторе и можем на нем выделить какую-то ячейку 2. Макрос работает на произвольном (не активном на момент запуска макроса) листе - НЕЛЬЗЯ писать Селект (вернее писать-то можно, никто не запрещает, но работать не будет). Мы не видим лист на экране (может, он вообще скрыт), как мы там можем ячейку выделить?
И вообще Селектами нужно пользоваться только по крайней необходимости, которая ну ооочень редко возникает при грамотном подходе к решению_Boroda_