Вот написала я макрос. А применить могу его только на том листе, на котором нахожусь. Захожу в список макросов, выбираю конкретный макрос и нажимаю "выполнить". А как сделать так, чтоб этот выбранный мной макрос применился сразу ко всем листам данной книги? Спасибо
Вот написала я макрос. А применить могу его только на том листе, на котором нахожусь. Захожу в список макросов, выбираю конкретный макрос и нажимаю "выполнить". А как сделать так, чтоб этот выбранный мной макрос применился сразу ко всем листам данной книги? СпасибоEkaterina
Ну, что-то я сильно сомневаюсь, что всё так просто, как написал SkyPro. Скорее всего всё-таки макрос нужно будет перенести в стандартный модуль и, перебирая страницы в цикле, внутри циклов указывать перед Cells и Range имя листа - переменную цикла.
Ну, что-то я сильно сомневаюсь, что всё так просто, как написал SkyPro. Скорее всего всё-таки макрос нужно будет перенести в стандартный модуль и, перебирая страницы в цикле, внутри циклов указывать перед Cells и Range имя листа - переменную цикла.Alex_ST
Alex_ST, ну в условиях задачи нет ничего. Ни файла, ни кода. Так что я выдал стандартный вариант, где все действия применяются к Activesheet. Если бы люди читали правила, или, хотя бы понимали, что для решения вопроса недостаточно попросить кнопку "сделать как надо", то и ответ был бы другой )
Alex_ST, ну в условиях задачи нет ничего. Ни файла, ни кода. Так что я выдал стандартный вариант, где все действия применяются к Activesheet. Если бы люди читали правила, или, хотя бы понимали, что для решения вопроса недостаточно попросить кнопку "сделать как надо", то и ответ был бы другой )SkyPro
Если бы люди читали правила, или, хотя бы понимали, что для решения вопроса недостаточно попросить кнопку "сделать как надо", то и ответ был бы другой )
Если бы люди читали правила, или, хотя бы понимали, что для решения вопроса недостаточно попросить кнопку "сделать как надо", то и ответ был бы другой )
Alex_ST, SkyPro, вот этот макрос. Только прошу сильно не смеяться Я не умею писать макросы, так что делала его просто с помощью кнопки "запись макроса", потом зашла в "изменить макрос" и добавила пароль защиты листа. Где тут в этом коде надо поменять так, чтобы он применялся сразу ко всем листам? Спасибо!
Alex_ST, SkyPro, вот этот макрос. Только прошу сильно не смеяться Я не умею писать макросы, так что делала его просто с помощью кнопки "запись макроса", потом зашла в "изменить макрос" и добавила пароль защиты листа. Где тут в этом коде надо поменять так, чтобы он применялся сразу ко всем листам? Спасибо!
А ещё можно один вопросик задать? Вот допустим есть у меня макрос, который удаляют содержимое определённых ячеек, ну и плюс проставляет суммы в некоторых колонках. Мне нужно, чтоб он 1 раз сделал это действие во всех листах книги, а после этого не действовал. Что нужно для этого сделать? Если, например, я этот макрос оставлю в списке сохранённых макросов этой конкретной книги, то при каждом открытии этой книги он будет опять проделывать все эти действия? Или не будет? А если я его удалю, то все те действия, которые он проделал до этого, отменятся или нет?
А ещё можно один вопросик задать? Вот допустим есть у меня макрос, который удаляют содержимое определённых ячеек, ну и плюс проставляет суммы в некоторых колонках. Мне нужно, чтоб он 1 раз сделал это действие во всех листах книги, а после этого не действовал. Что нужно для этого сделать? Если, например, я этот макрос оставлю в списке сохранённых макросов этой конкретной книги, то при каждом открытии этой книги он будет опять проделывать все эти действия? Или не будет? А если я его удалю, то все те действия, которые он проделал до этого, отменятся или нет?Ekaterina
Ekaterina, не вдаваясь в подробности, что и зачем Вы защищали, по всем листам книги будет так: [vba]
Код
Sub защитить_листы() Dim sH As Worksheet Application.ScreenUpdating = False For Each sH In ThisWorkbook.Worksheets sH.Cells.Locked = True: sH.Cells.FormulaHidden = False ' sH.Range("AE13:AP638", "BF11", "BN13:BR638").Locked = False ' это НЕ ПРАВИЛЬНО - ошибка синтаксиса!!! sH.Range("AE13:AP638,BF11,BN13:BR638").Locked = False ' вот так должно быть sH.Protect DrawingObjects:=True, Contents:=True, Password:="art789", _ Scenarios:=True, AllowFormattingCells:=True, AllowFormattingColumns:=True, _ AllowFormattingRows:=True, AllowSorting:=True, AllowFiltering:=True Next sH Application.ScreenUpdating = True End Sub
[/vba] А про "вопросик", так ведь макрос сам по себе ничего делать не будет. Чтобы он сработал, нужно его вызвать. Вызвать его можете Вы сами, запустив, например, из списка макросов. А можно ещё организовать его работу автоматически, но не самостоятельно, а только по факту происхождения какого-либо события (например, открытия книги, выбора листа, изменения выбранной ячейки, и ещё огромная куча событий-Event может быть отслежена программно). А если у Вас в книге обработка событий (вызов процедур по событиям) не прописан, то никакой макрос сам по себе не запустится.
********************************************** ВНИМАНИЕ! Вчера в коде мною была допущена ошибка в синтаксисе обращения к объекту Range. Прошу прощения. На данный момент она уже закомментирована и исправлена.
Ekaterina, не вдаваясь в подробности, что и зачем Вы защищали, по всем листам книги будет так: [vba]
Код
Sub защитить_листы() Dim sH As Worksheet Application.ScreenUpdating = False For Each sH In ThisWorkbook.Worksheets sH.Cells.Locked = True: sH.Cells.FormulaHidden = False ' sH.Range("AE13:AP638", "BF11", "BN13:BR638").Locked = False ' это НЕ ПРАВИЛЬНО - ошибка синтаксиса!!! sH.Range("AE13:AP638,BF11,BN13:BR638").Locked = False ' вот так должно быть sH.Protect DrawingObjects:=True, Contents:=True, Password:="art789", _ Scenarios:=True, AllowFormattingCells:=True, AllowFormattingColumns:=True, _ AllowFormattingRows:=True, AllowSorting:=True, AllowFiltering:=True Next sH Application.ScreenUpdating = True End Sub
[/vba] А про "вопросик", так ведь макрос сам по себе ничего делать не будет. Чтобы он сработал, нужно его вызвать. Вызвать его можете Вы сами, запустив, например, из списка макросов. А можно ещё организовать его работу автоматически, но не самостоятельно, а только по факту происхождения какого-либо события (например, открытия книги, выбора листа, изменения выбранной ячейки, и ещё огромная куча событий-Event может быть отслежена программно). А если у Вас в книге обработка событий (вызов процедур по событиям) не прописан, то никакой макрос сам по себе не запустится.
********************************************** ВНИМАНИЕ! Вчера в коде мною была допущена ошибка в синтаксисе обращения к объекту Range. Прошу прощения. На данный момент она уже закомментирована и исправлена.Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Пятница, 01.11.2013, 10:25
Alex_ST, спасибо большое. Но я не поняла, а где все те строчки, которые были у меня? Их же тоже нужно куда-то вставлять, чтоб у меня защищались на листе именно те области, которые нужно защитить? Или это и есть весь макрос целиком?
Alex_ST, спасибо большое. Но я не поняла, а где все те строчки, которые были у меня? Их же тоже нужно куда-то вставлять, чтоб у меня защищались на листе именно те области, которые нужно защитить? Или это и есть весь макрос целиком?Ekaterina
Alex_ST, не работает . Выделяет вот этот отравок End With sH.Range и выдаёт ошибку: "Compile error: Wrong number of arguments or invalid property assignment"
Alex_ST, не работает . Выделяет вот этот отравок End With sH.Range и выдаёт ошибку: "Compile error: Wrong number of arguments or invalid property assignment"Ekaterina
К сожалению, моё свободное время закончилось. Убегаю. Проверить сейчас не могу. Самое раннее - вечером. (а куча хлама, которую Вам выдал макрорекордер, никому нафиг не нужна, т.к. ничего не делает)
К сожалению, моё свободное время закончилось. Убегаю. Проверить сейчас не могу. Самое раннее - вечером. (а куча хлама, которую Вам выдал макрорекордер, никому нафиг не нужна, т.к. ничего не делает)Alex_ST
Ну, описАлся когда аргументы в Range(...) перечислял... Поспешил, не проверил Наврал в синтаксисе перечисления диапазонов в Range Код исправил в предыдущем посте чтобы на форуме не было ошибочного синтаксиса
Ну, описАлся когда аргументы в Range(...) перечислял... Поспешил, не проверил Наврал в синтаксисе перечисления диапазонов в Range Код исправил в предыдущем посте чтобы на форуме не было ошибочного синтаксисаAlex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Четверг, 31.10.2013, 20:43