Как применить макрос ко всем листам книги excel
Для автоматизации повторяющихся задач в Microsoft Excel можно быстро записать макрос. Предположим, у вас есть даты в различном формате и вы хотите применить ко всем из них один формат. Это можно сделать с помощью макроса. Вы можете записать макрос, который применяет нужный формат, а затем запускать его при необходимости.
При записи макроса все действия в записи макроса записываются Visual Basic для приложений (VBA) коде. Эти действия могут включать ввод текста или чисел, выбор ячеек или команд на ленте или в меню, форматирование ячеек, строк или столбцов или даже импорт данных из внешнего источника, скажем, Microsoft Access. Visual Basic Приложение (VBA) — это подмножество мощного Visual Basic программирования, которое входит в большинство Office приложений. Хотя VBA позволяет автоматизировать процессы как в приложениях, так и между Office, необязательно знать код VBA или программирование на компьютере, если оно делает то, что вам нужно.
Важно знать, что при записи макроса регистрируются почти все ваши действия. Поэтому если вы допустите ошибку, например нажмете не ту кнопку, средство записи макросов зарегистрирует это действие. В таком случае можно снова записать всю последовательность или изменить код VBA. Поэтому перед записью процесса следует хорошо проработать его. Чем точнее вы запишете последовательность, тем более эффективно будет работать макрос.
Макросы и средства VBA находятся на вкладке Разработчик, которая по умолчанию скрыта, поэтому сначала нужно включить ее. Дополнительные сведения см. в статье Отображение вкладки "Разработчик".
Запись макроса
Перед записью макросов полезно знать следующее:
Макрос, записанный для работы с диапазоном Excel, будет выполняться только для ячеек этого диапазона. Поэтому если вы добавите в диапазон новую строку, макрос не будет применяться к ней.
Если вам нужно записать длинную последовательность задач, советуем вместо этого использовать несколько более мелких макросов.
В макросе могут содержаться и задачи, не относящиеся к Excel. Процесс макроса может охватывать прочие приложения Office и другие программы, которые поддерживают Visual Basic для приложений (VBA). Например, вы можете записать макрос, который сначала обновляет таблицу в Excel, а затем открывает Outlook для ее отправки по электронной почте.
Чтобы записать макрос, следуйте инструкциям ниже.
На вкладке Разработчик в группе Код нажмите кнопку Запись макроса.
Нажмите ALT+T+M+R.
В поле Имя макроса введите название макроса. Сделайте имя понятным, чтобы можно было быстро найти нужный макрос.
Чтобы назначить сочетание клавиш для запуска макроса, в поле Сочетание клавиш введите любую строчную или прописную букву. Рекомендуется использовать сочетания клавиш с CTRL+SHIFT, так как они будут заменять собой совпадающие с ними стандартные сочетания клавиш в Excel, пока открыта книга, содержащая макрос. Например, если назначить сочетание клавиш CTRL+Z (Отменить), вы не сможете использовать его для функции "Отменить" в данном экземпляре Excel.
В списке Сохранить в выберите книгу, в которой вы хотите сохранить макрос.
Как правило, макрос сохраняется в расположении Эта книга, но если вы хотите, чтобы макрос был доступен при использовании Excel, выберите Личная книга макроса . При выборе личнойкниги макроса Excel создает скрытую личную книгу макроса (Personal.xlsб), если она еще не существует, и сохраняет макрос в этой книге.
В поле Описание при необходимости введите краткое описание действий макроса.
Хотя поле "Описание" является необязательным, рекомендуется его заполнить. Кроме того, желательно ввести понятное описание, которое будет полезно вам и всем, кто запускает макрос. Если у вас много макросов, описания помогут быстро определить, для чего они нужны.
Чтобы начать запись макроса, нажмите кнопку ОК.
Выполните действия, которые нужно записать.
На вкладке Разработчик в группе Код нажмите кнопку Остановить запись .
Нажмите ALT+T+M+R.
Работа с макросами, записанными в Excel
На вкладке Разработчик щелкните Макросы, чтобы просмотреть макросы, связанные с книгой. Кроме того, можно нажать клавиши ALT+F8. При этом откроется диалоговое окно Макрос.
Внимание: Макросы нельзя отменить. Прежде чем впервые запускать записанный макрос, сохраните книгу или создайте ее копию, чтобы предотвратить внесение нежелательных изменений. Если вас не устраивают результаты выполнения макроса, вы можете закрыть книгу, не сохраняя ее.
Ниже приведены дополнительные сведения о работе с макросами в Excel.
Сведения о параметрах безопасности макросов и их значении.
Макросы можно запускать различными способами, например с помощью сочетания клавиш, графического объекта, панели быстрого доступа, кнопки или даже при открытии книги.
С помощью редактора Visual Basic можно изменять макросы, присоединенные к книге.
Если книга содержит макрос VBA, который нужно использовать где-либо еще, этот модуль можно скопировать в другую книгу с помощью редактора Microsoft Visual Basic.
Назначение макроса объекту, фигуре или графическому элементу
Щелкните правой кнопкой мыши объект, рисунок, фигуру или элемент, которому вы хотите назначить существующий макрос, и выберите пункт Назначить макрос.
В поле Назначить макроса выберите макрос, который вы хотите назначить.
Вы можете назначить макрос значку и добавить его на панель быстрого доступа или ленту.
Вы можете назначать макросы формам и элементам ActiveX на листе.
Узнайте, как включать и отключать макросы в файлах Office.
Открытие редактора Visual Basic
Нажмите клавиши ALT+F11.
Узнайте, как найти справку по элементам Visual Basic.
Работа с записанным кодом в редакторе Visual Basic (VBE)
С помощью редактора Visual Basic (VBE) вы можете добавлять в записанный код собственные переменные, управляющие структуры и другие элементы, которые не поддерживает средство записи макросов. Так как средство записи макросов фиксирует почти каждый шаг, выполняемый во время записи, может также потребоваться удалить ненужный код. Просмотр записанного кода — отличный способ научиться программировать на VBA или отточить свои навыки.
Пример изменения записанного кода можно найти в статье Начало работы с VBA в Excel.
Запись макроса
Перед записью макросов полезно знать следующее:
Макрос, записанный для работы с диапазоном Excel, будет выполняться только для ячеек этого диапазона. Поэтому если вы добавите в диапазон новую строку, макрос не будет применяться к ней.
Если вам нужно записать длинную последовательность задач, советуем вместо этого использовать несколько более мелких макросов.
В макросе могут содержаться и задачи, не относящиеся к Excel. Процесс макроса может охватывать прочие приложения Office и другие программы, которые поддерживают Visual Basic для приложений (VBA). Например, вы можете записать макрос, который сначала обновляет таблицу в Excel, а затем открывает Outlook для ее отправки по электронной почте.
Макросы и средства VBA находятся на вкладке Разработчик, которая по умолчанию скрыта, поэтому сначала нужно включить ее.
Перейдите в Excel > параметры. > ленты & панель инструментов.
В категории Настроить ленту в списке Основные вкладки установите флажок Разработчик, а затем нажмите кнопку Сохранить.
Чтобы записать макрос, следуйте инструкциям ниже.
На вкладке Разработчик нажмите кнопку Запись макроса.
В поле Имя макроса введите название макроса. Сделайте имя понятным, чтобы можно было быстро найти нужный макрос.
В списке Сохранить в выберите книгу, в которой вы хотите сохранить макрос.
Как правило, макрос сохраняется в расположении Эта книга, но если вы хотите, чтобы макрос был доступен при использовании Excel, выберите Личная книга макроса. При выборе личнойкниги макроса Excel создает скрытую личную книгу макроса (PERSONAL.XLSB), если она еще не существует, и сохраняет макрос в этой книге. Книги в этой папке открываются автоматически при Excel, и любой код, сохраненный в личной книге макроса, будет указан в диалоговом окну Макрос, которое объясняется в следующем разделе.
Чтобы назначить сочетание клавиш для запуска макроса, в поле Сочетание клавиш введите любую строчную или прописную букву. Рекомендуется использовать сочетания клавиш, которые еще не назначены другим командам, так как они будут переопределять совпадающие с ними стандартные сочетания клавиш в Excel, пока открыта книга, содержащая макрос.
В поле Описание при необходимости введите краткое описание действий макроса.
Хотя поле "Описание" является необязательным, рекомендуется его заполнить. Полезно ввести содержательное описание со всеми сведениями, которые могут быть полезны вам или другим пользователям, которые будут запускать макрос. Если у вас много макросов, описания помогут быстро определить, для чего они нужны.
Чтобы начать запись макроса, нажмите кнопку ОК.
Выполните действия, которые нужно записать.
На вкладке Разработчик щелкните Остановить запись.
Работа с макросами, записанными в Excel
На вкладке Разработчик щелкните Макросы, чтобы просмотреть макросы, связанные с книгой. При этом откроется диалоговое окно Макрос.
Примечание: Макросы нельзя отменить. Прежде чем впервые запускать записанный макрос, сохраните книгу или создайте ее копию, чтобы предотвратить внесение нежелательных изменений. Если вас не устраивают результаты выполнения макроса, вы можете закрыть книгу, не сохраняя ее.
Ниже приведены дополнительные сведения о работе с макросами в Excel.
Узнайте, как включать и отключать макросы в Excel для Mac.
Если книга содержит макрос VBA, который нужно использовать где-либо еще, этот модуль можно скопировать в другую книгу с помощью редактора Microsoft Visual Basic.
Назначение макроса объекту, фигуре или графическому элементу
Щелкните правой кнопкой мыши объект, рисунок, фигуру или элемент, которому вы хотите назначить существующий макрос, и выберите пункт Назначить макрос.
В поле Назначить макроса выберите макрос, который вы хотите назначить.
Вы можете назначить макрос значку и добавить его на панель быстрого доступа или ленту.
Вы можете назначать макросы формам и элементам ActiveX на листе.
Открытие редактора Visual Basic
На вкладке Разработчик щелкните Visual Basic или выберите Сервис > Макрос > Редактор Visual Basic.
Узнайте, как найти справку по элементам Visual Basic.
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.
Всем привет, есть книга и 30 листов. Есть код, записанный в "ЭтаКнига", он срабатывает каждый раз при изменении определенного диапазона ячеек в листе. Но нужно, чтоб он срабатывал на всех листах кроме первого, причем имя первого все время может меняться. Это главное условие. Макрос изменяет заливку ячеек в листах в диапазоне A5:Z60 при вводе 1, 0 или 0,5. Нужно игнорировать первый лист. Как? If Sh.Name = "Лист 1" Then Exit Sub очень просто конечно, но нужно универсальное, потому что имя первого листа всегда разное в разных файлах.
Код:
[vba]
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range("A5:Z60") 'задаем диапазон
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then 'если измененяется ячейка в диапазоне KeyCells, то красим в светло-желтый
Application.ScreenUpdating = False:
For Each Cell In KeyCells 'условие для каждой ячейки в диапазоне
If Cell.Value = "0" Then Cell.Interior.ColorIndex = 36 'если равно 0, то красим в светло-желтый
If Cell.Value = 0.5 Then Cell.Interior.ColorIndex = 36 'если равно 0,5, то красим в светло-желтый
If Cell.Value = 1 Then Cell.Interior.ColorIndex = 36 'если равно 1, то красим в светло-желтый
If Cell.Value = "" Then Cell.Interior.ColorIndex = 0 'если пустая, то красим в белый
Next
End If
End Sub
Всем привет, есть книга и 30 листов. Есть код, записанный в "ЭтаКнига", он срабатывает каждый раз при изменении определенного диапазона ячеек в листе. Но нужно, чтоб он срабатывал на всех листах кроме первого, причем имя первого все время может меняться. Это главное условие. Макрос изменяет заливку ячеек в листах в диапазоне A5:Z60 при вводе 1, 0 или 0,5. Нужно игнорировать первый лист. Как? If Sh.Name = "Лист 1" Then Exit Sub очень просто конечно, но нужно универсальное, потому что имя первого листа всегда разное в разных файлах.
Код:
[vba]
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range("A5:Z60") 'задаем диапазон
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then 'если измененяется ячейка в диапазоне KeyCells, то красим в светло-желтый
Application.ScreenUpdating = False:
For Each Cell In KeyCells 'условие для каждой ячейки в диапазоне
If Cell.Value = "0" Then Cell.Interior.ColorIndex = 36 'если равно 0, то красим в светло-желтый
If Cell.Value = 0.5 Then Cell.Interior.ColorIndex = 36 'если равно 0,5, то красим в светло-желтый
If Cell.Value = 1 Then Cell.Interior.ColorIndex = 36 'если равно 1, то красим в светло-желтый
If Cell.Value = "" Then Cell.Interior.ColorIndex = 0 'если пустая, то красим в белый
Next
End If
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range("A5:Z60") 'задаем диапазон
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then 'если измененяется ячейка в диапазоне KeyCells, то красим в светло-желтый
Application.ScreenUpdating = False:
For Each Cell In KeyCells 'условие для каждой ячейки в диапазоне
If Cell.Value = "0" Then Cell.Interior.ColorIndex = 36 'если равно 0, то красим в светло-желтый
If Cell.Value = 0.5 Then Cell.Interior.ColorIndex = 36 'если равно 0,5, то красим в светло-желтый
If Cell.Value = 1 Then Cell.Interior.ColorIndex = 36 'если равно 1, то красим в светло-желтый
If Cell.Value = "" Then Cell.Interior.ColorIndex = 0 'если пустая, то красим в белый
Next
End If
End Sub
а если в книге 2 листа?
при i = 3, макрос вывалится с ошибкой Run Time Error9 на строке Worksheets(i).Select
а если в книге 4 листа? (4-й лист окажется за циклом) код переписывать?
увы, это не решение задачи.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
Народ, не получается заставить макрос применяться ко всем листам в книге. замучался уже.
Подскажите как решить.
Такие есть предлжения:
1) или в теле цикла по листам (For Each sh In Worksheets. ) следующей строчкой написать sh.Activate
2) или везде, в теле цикла перед всякий упоминанием ячеек (Range, Cells и пр.) писать "sh."
например,
было: Range("A3").Select
надо: sh.Range("A3").Select
было:Cells(ActiveCell.Row, ActiveCell.Column).Offset(1, 0).Select
надо:sh.Cells(sh.ActiveCell.Row, sh.ActiveCell.Column).Offset(1, 0).Select
на мой взгляд 1-й вариант потребует меньшее количество исправлений, но я не очень внимательно всматривался в код, возможно там есть перенос данных с листа на лист. Тогда необходимо отследить эти вещи где это нужно явно указывать с какой книги и листа данные.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
Зачем нужно открывать файл строкой Workbooks.Open (Fi), UpdateLinks:=0, если Вам нужно только его имя?
Сразу пишите A = GetDateFromFileName(Fi)
А команду Workbooks.Open Fi поставьте в код в том месте, где нужны будут данные из листов этого файла.
можно заменить на
так будет работать побыстрее.
Далее следует код
For j = 1 To 14 'заполнение дат составления скидочной таблицы
.
Next j
логика работы которого мне не совсем понятна.
Особенно часть For i = 1 To 2: Selection.End(xlDown).Select: Next i
Если объясните, что должен делать код, тогда и станет возможным его корректировать.
Пока же, я толком и не понял, следует перебирать листы этого файла (thisworkbook), или только что открытого (activeworkbook).
В итоге будет что-то вроде такого:
__ Полезные надстройки для Excel. Парсинг сайтов и файлов.
Макросы любой сложности на заказ. Мониторинг цен конкурентов
Вот написала я макрос. А применить могу его только на том листе, на котором нахожусь. Захожу в список макросов, выбираю конкретный макрос и нажимаю "выполнить".
А как сделать так, чтоб этот выбранный мной макрос применился сразу ко всем листам данной книги?
Спасибо
Вот написала я макрос. А применить могу его только на том листе, на котором нахожусь. Захожу в список макросов, выбираю конкретный макрос и нажимаю "выполнить".
А как сделать так, чтоб этот выбранный мной макрос применился сразу ко всем листам данной книги?
Спасибо Ekaterina
Указать эти листы в макросе
[p.s.]Вы вообще видели в какой раздел постите? При чем здесь формулы?
Тему перенес[/p.s.]
Указать эти листы в макросе
[p.s.]Вы вообще видели в какой раздел постите? При чем здесь формулы?
Тему перенес[/p.s.] Serge_007
Указать эти листы в макросе
[p.s.]Вы вообще видели в какой раздел постите? При чем здесь формулы?
Тему перенес[/p.s.] Автор - Serge_007
Дата добавления - 30.10.2013 в 15:26
Sub sshheeetttss()
Dim i&
For i = 1 To .sheets.Count
ThisWorkbook.sheets(i).Activate
' ваш макрос
Next
End Sub
Sub sshheeetttss()
Dim i&
For i = 1 To .sheets.Count
ThisWorkbook.sheets(i).Activate
' ваш макрос
Next
End Sub
Sub sshheeetttss()
Dim i&
For i = 1 To .sheets.Count
ThisWorkbook.sheets(i).Activate
' ваш макрос
Next
End Sub
Ой, извините Автор - Ekaterina
Дата добавления - 30.10.2013 в 18:48
Ну, что-то я сильно сомневаюсь, что всё так просто, как написал SkyPro.
Скорее всего всё-таки макрос нужно будет перенести в стандартный модуль и, перебирая страницы в цикле, внутри циклов указывать перед Cells и Range имя листа - переменную цикла.
Ну, что-то я сильно сомневаюсь, что всё так просто, как написал SkyPro.
Скорее всего всё-таки макрос нужно будет перенести в стандартный модуль и, перебирая страницы в цикле, внутри циклов указывать перед Cells и Range имя листа - переменную цикла. Alex_ST
Alex_ST, ну в условиях задачи нет ничего. Ни файла, ни кода. Так что я выдал стандартный вариант, где все действия применяются к Activesheet.
Если бы люди читали правила, или, хотя бы понимали, что для решения вопроса недостаточно попросить кнопку "сделать как надо", то и ответ был бы другой )
Alex_ST, ну в условиях задачи нет ничего. Ни файла, ни кода. Так что я выдал стандартный вариант, где все действия применяются к Activesheet.
Если бы люди читали правила, или, хотя бы понимали, что для решения вопроса недостаточно попросить кнопку "сделать как надо", то и ответ был бы другой ) SkyPro
Если бы люди читали правила, или, хотя бы понимали, что для решения вопроса недостаточно попросить кнопку "сделать как надо", то и ответ был бы другой )
Если бы люди читали правила, или, хотя бы понимали, что для решения вопроса недостаточно попросить кнопку "сделать как надо", то и ответ был бы другой )
Если бы люди читали правила, или, хотя бы понимали, что для решения вопроса недостаточно попросить кнопку "сделать как надо", то и ответ был бы другой )
Alex_ST,
SkyPro, вот этот макрос. Только прошу сильно не смеяться Я не умею писать макросы, так что делала его просто с помощью кнопки "запись макроса", потом зашла в "изменить макрос" и добавила пароль защиты листа. Где тут в этом коде надо поменять так, чтобы он применялся сразу ко всем листам? Спасибо!
Sub защитить_листы()
'
' защитить_листы Макрос
'
'
Cells.Select
Selection.Locked = True
Selection.FormulaHidden = False
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 7
ActiveWindow.ScrollColumn = 8
ActiveWindow.ScrollColumn = 11
ActiveWindow.ScrollColumn = 13
ActiveWindow.ScrollColumn = 14
ActiveWindow.ScrollColumn = 16
ActiveWindow.ScrollColumn = 17
ActiveWindow.ScrollColumn = 18
ActiveWindow.ScrollColumn = 19
ActiveWindow.ScrollColumn = 20
ActiveWindow.ScrollColumn = 21
ActiveWindow.ScrollColumn = 22
ActiveWindow.ScrollColumn = 23
ActiveWindow.ScrollColumn = 24
ActiveWindow.ScrollColumn = 25
ActiveWindow.ScrollColumn = 26
ActiveWindow.SmallScroll Down:=-9
Range("AE13:AP27").Select
Range(Selection, Selection.End(xlDown)).Select
Range("AE13:AP638").Select
Selection.Locked = False
Selection.FormulaHidden = False
ActiveWindow.ScrollColumn = 27
ActiveWindow.ScrollColumn = 28
ActiveWindow.ScrollColumn = 30
ActiveWindow.ScrollColumn = 31
ActiveWindow.ScrollColumn = 32
ActiveWindow.ScrollColumn = 33
ActiveWindow.ScrollColumn = 34
ActiveWindow.ScrollColumn = 35
ActiveWindow.ScrollColumn = 36
ActiveWindow.ScrollColumn = 37
ActiveWindow.ScrollColumn = 38
ActiveWindow.ScrollColumn = 39
ActiveWindow.ScrollColumn = 40
ActiveWindow.ScrollColumn = 41
ActiveWindow.ScrollColumn = 42
ActiveWindow.ScrollColumn = 43
ActiveWindow.ScrollColumn = 44
ActiveWindow.ScrollColumn = 45
ActiveWindow.ScrollColumn = 46
ActiveWindow.ScrollColumn = 47
ActiveWindow.ScrollColumn = 48
Range("BF11").Select
Selection.Locked = False
Selection.FormulaHidden = False
Range("BN631:BR638").Select
Range("BN638").Activate
ActiveWindow.ScrollRow = 608
ActiveWindow.ScrollRow = 605
ActiveWindow.ScrollRow = 599
ActiveWindow.ScrollRow = 593
ActiveWindow.ScrollRow = 582
ActiveWindow.ScrollRow = 566
ActiveWindow.ScrollRow = 551
ActiveWindow.ScrollRow = 533
ActiveWindow.ScrollRow = 514
ActiveWindow.ScrollRow = 478
ActiveWindow.ScrollRow = 444
ActiveWindow.ScrollRow = 394
ActiveWindow.ScrollRow = 358
ActiveWindow.ScrollRow = 328
ActiveWindow.ScrollRow = 297
ActiveWindow.ScrollRow = 279
ActiveWindow.ScrollRow = 270
ActiveWindow.ScrollRow = 260
ActiveWindow.ScrollRow = 250
ActiveWindow.ScrollRow = 239
ActiveWindow.ScrollRow = 230
ActiveWindow.ScrollRow = 209
ActiveWindow.ScrollRow = 202
ActiveWindow.ScrollRow = 201
ActiveWindow.ScrollRow = 195
ActiveWindow.ScrollRow = 191
ActiveWindow.ScrollRow = 187
ActiveWindow.ScrollRow = 181
ActiveWindow.ScrollRow = 177
ActiveWindow.ScrollRow = 174
ActiveWindow.ScrollRow = 170
ActiveWindow.ScrollRow = 166
ActiveWindow.ScrollRow = 163
ActiveWindow.ScrollRow = 158
ActiveWindow.ScrollRow = 152
ActiveWindow.ScrollRow = 144
ActiveWindow.ScrollRow = 137
ActiveWindow.ScrollRow = 128
ActiveWindow.ScrollRow = 119
ActiveWindow.ScrollRow = 110
ActiveWindow.ScrollRow = 103
ActiveWindow.ScrollRow = 96
ActiveWindow.ScrollRow = 90
ActiveWindow.ScrollRow = 86
ActiveWindow.ScrollRow = 83
ActiveWindow.ScrollRow = 79
ActiveWindow.ScrollRow = 76
ActiveWindow.ScrollRow = 74
ActiveWindow.ScrollRow = 71
ActiveWindow.ScrollRow = 70
ActiveWindow.ScrollRow = 68
ActiveWindow.ScrollRow = 67
ActiveWindow.ScrollRow = 65
ActiveWindow.ScrollRow = 63
ActiveWindow.ScrollRow = 61
ActiveWindow.ScrollRow = 60
ActiveWindow.ScrollRow = 56
ActiveWindow.ScrollRow = 52
ActiveWindow.ScrollRow = 49
ActiveWindow.ScrollRow = 47
ActiveWindow.ScrollRow = 45
ActiveWindow.ScrollRow = 43
ActiveWindow.ScrollRow = 41
ActiveWindow.ScrollRow = 39
ActiveWindow.ScrollRow = 35
ActiveWindow.ScrollRow = 32
ActiveWindow.ScrollRow = 31
ActiveWindow.ScrollRow = 27
ActiveWindow.ScrollRow = 25
ActiveWindow.ScrollRow = 23
ActiveWindow.ScrollRow = 21
ActiveWindow.ScrollRow = 19
ActiveWindow.ScrollRow = 14
ActiveWindow.ScrollRow = 13
Range("BN13:BR638").Select
Range("BN638").Activate
Selection.Locked = False
Selection.FormulaHidden = False
ActiveWindow.ScrollColumn = 45
ActiveWindow.ScrollColumn = 41
ActiveWindow.ScrollColumn = 7
ActiveWindow.ScrollColumn = 5
ActiveWindow.SmallScroll Down:=-9
Range("D8").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Password:="art789", Scenarios:=True _
, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowSorting:=True, AllowFiltering:=True
End Sub
Alex_ST,
SkyPro, вот этот макрос. Только прошу сильно не смеяться Я не умею писать макросы, так что делала его просто с помощью кнопки "запись макроса", потом зашла в "изменить макрос" и добавила пароль защиты листа. Где тут в этом коде надо поменять так, чтобы он применялся сразу ко всем листам? Спасибо!
Sub защитить_листы()
'
' защитить_листы Макрос
'
'
Cells.Select
Selection.Locked = True
Selection.FormulaHidden = False
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 7
ActiveWindow.ScrollColumn = 8
ActiveWindow.ScrollColumn = 11
ActiveWindow.ScrollColumn = 13
ActiveWindow.ScrollColumn = 14
ActiveWindow.ScrollColumn = 16
ActiveWindow.ScrollColumn = 17
ActiveWindow.ScrollColumn = 18
ActiveWindow.ScrollColumn = 19
ActiveWindow.ScrollColumn = 20
ActiveWindow.ScrollColumn = 21
ActiveWindow.ScrollColumn = 22
ActiveWindow.ScrollColumn = 23
ActiveWindow.ScrollColumn = 24
ActiveWindow.ScrollColumn = 25
ActiveWindow.ScrollColumn = 26
ActiveWindow.SmallScroll Down:=-9
Range("AE13:AP27").Select
Range(Selection, Selection.End(xlDown)).Select
Range("AE13:AP638").Select
Selection.Locked = False
Selection.FormulaHidden = False
ActiveWindow.ScrollColumn = 27
ActiveWindow.ScrollColumn = 28
ActiveWindow.ScrollColumn = 30
ActiveWindow.ScrollColumn = 31
ActiveWindow.ScrollColumn = 32
ActiveWindow.ScrollColumn = 33
ActiveWindow.ScrollColumn = 34
ActiveWindow.ScrollColumn = 35
ActiveWindow.ScrollColumn = 36
ActiveWindow.ScrollColumn = 37
ActiveWindow.ScrollColumn = 38
ActiveWindow.ScrollColumn = 39
ActiveWindow.ScrollColumn = 40
ActiveWindow.ScrollColumn = 41
ActiveWindow.ScrollColumn = 42
ActiveWindow.ScrollColumn = 43
ActiveWindow.ScrollColumn = 44
ActiveWindow.ScrollColumn = 45
ActiveWindow.ScrollColumn = 46
ActiveWindow.ScrollColumn = 47
ActiveWindow.ScrollColumn = 48
Range("BF11").Select
Selection.Locked = False
Selection.FormulaHidden = False
Range("BN631:BR638").Select
Range("BN638").Activate
ActiveWindow.ScrollRow = 608
ActiveWindow.ScrollRow = 605
ActiveWindow.ScrollRow = 599
ActiveWindow.ScrollRow = 593
ActiveWindow.ScrollRow = 582
ActiveWindow.ScrollRow = 566
ActiveWindow.ScrollRow = 551
ActiveWindow.ScrollRow = 533
ActiveWindow.ScrollRow = 514
ActiveWindow.ScrollRow = 478
ActiveWindow.ScrollRow = 444
ActiveWindow.ScrollRow = 394
ActiveWindow.ScrollRow = 358
ActiveWindow.ScrollRow = 328
ActiveWindow.ScrollRow = 297
ActiveWindow.ScrollRow = 279
ActiveWindow.ScrollRow = 270
ActiveWindow.ScrollRow = 260
ActiveWindow.ScrollRow = 250
ActiveWindow.ScrollRow = 239
ActiveWindow.ScrollRow = 230
ActiveWindow.ScrollRow = 209
ActiveWindow.ScrollRow = 202
ActiveWindow.ScrollRow = 201
ActiveWindow.ScrollRow = 195
ActiveWindow.ScrollRow = 191
ActiveWindow.ScrollRow = 187
ActiveWindow.ScrollRow = 181
ActiveWindow.ScrollRow = 177
ActiveWindow.ScrollRow = 174
ActiveWindow.ScrollRow = 170
ActiveWindow.ScrollRow = 166
ActiveWindow.ScrollRow = 163
ActiveWindow.ScrollRow = 158
ActiveWindow.ScrollRow = 152
ActiveWindow.ScrollRow = 144
ActiveWindow.ScrollRow = 137
ActiveWindow.ScrollRow = 128
ActiveWindow.ScrollRow = 119
ActiveWindow.ScrollRow = 110
ActiveWindow.ScrollRow = 103
ActiveWindow.ScrollRow = 96
ActiveWindow.ScrollRow = 90
ActiveWindow.ScrollRow = 86
ActiveWindow.ScrollRow = 83
ActiveWindow.ScrollRow = 79
ActiveWindow.ScrollRow = 76
ActiveWindow.ScrollRow = 74
ActiveWindow.ScrollRow = 71
ActiveWindow.ScrollRow = 70
ActiveWindow.ScrollRow = 68
ActiveWindow.ScrollRow = 67
ActiveWindow.ScrollRow = 65
ActiveWindow.ScrollRow = 63
ActiveWindow.ScrollRow = 61
ActiveWindow.ScrollRow = 60
ActiveWindow.ScrollRow = 56
ActiveWindow.ScrollRow = 52
ActiveWindow.ScrollRow = 49
ActiveWindow.ScrollRow = 47
ActiveWindow.ScrollRow = 45
ActiveWindow.ScrollRow = 43
ActiveWindow.ScrollRow = 41
ActiveWindow.ScrollRow = 39
ActiveWindow.ScrollRow = 35
ActiveWindow.ScrollRow = 32
ActiveWindow.ScrollRow = 31
ActiveWindow.ScrollRow = 27
ActiveWindow.ScrollRow = 25
ActiveWindow.ScrollRow = 23
ActiveWindow.ScrollRow = 21
ActiveWindow.ScrollRow = 19
ActiveWindow.ScrollRow = 14
ActiveWindow.ScrollRow = 13
Range("BN13:BR638").Select
Range("BN638").Activate
Selection.Locked = False
Selection.FormulaHidden = False
ActiveWindow.ScrollColumn = 45
ActiveWindow.ScrollColumn = 41
ActiveWindow.ScrollColumn = 7
ActiveWindow.ScrollColumn = 5
ActiveWindow.SmallScroll Down:=-9
Range("D8").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Password:="art789", Scenarios:=True _
, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowSorting:=True, AllowFiltering:=True
End Sub
Sub защитить_листы()
'
' защитить_листы Макрос
'
'
Cells.Select
Selection.Locked = True
Selection.FormulaHidden = False
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 7
ActiveWindow.ScrollColumn = 8
ActiveWindow.ScrollColumn = 11
ActiveWindow.ScrollColumn = 13
ActiveWindow.ScrollColumn = 14
ActiveWindow.ScrollColumn = 16
ActiveWindow.ScrollColumn = 17
ActiveWindow.ScrollColumn = 18
ActiveWindow.ScrollColumn = 19
ActiveWindow.ScrollColumn = 20
ActiveWindow.ScrollColumn = 21
ActiveWindow.ScrollColumn = 22
ActiveWindow.ScrollColumn = 23
ActiveWindow.ScrollColumn = 24
ActiveWindow.ScrollColumn = 25
ActiveWindow.ScrollColumn = 26
ActiveWindow.SmallScroll Down:=-9
Range("AE13:AP27").Select
Range(Selection, Selection.End(xlDown)).Select
Range("AE13:AP638").Select
Selection.Locked = False
Selection.FormulaHidden = False
ActiveWindow.ScrollColumn = 27
ActiveWindow.ScrollColumn = 28
ActiveWindow.ScrollColumn = 30
ActiveWindow.ScrollColumn = 31
ActiveWindow.ScrollColumn = 32
ActiveWindow.ScrollColumn = 33
ActiveWindow.ScrollColumn = 34
ActiveWindow.ScrollColumn = 35
ActiveWindow.ScrollColumn = 36
ActiveWindow.ScrollColumn = 37
ActiveWindow.ScrollColumn = 38
ActiveWindow.ScrollColumn = 39
ActiveWindow.ScrollColumn = 40
ActiveWindow.ScrollColumn = 41
ActiveWindow.ScrollColumn = 42
ActiveWindow.ScrollColumn = 43
ActiveWindow.ScrollColumn = 44
ActiveWindow.ScrollColumn = 45
ActiveWindow.ScrollColumn = 46
ActiveWindow.ScrollColumn = 47
ActiveWindow.ScrollColumn = 48
Range("BF11").Select
Selection.Locked = False
Selection.FormulaHidden = False
Range("BN631:BR638").Select
Range("BN638").Activate
ActiveWindow.ScrollRow = 608
ActiveWindow.ScrollRow = 605
ActiveWindow.ScrollRow = 599
ActiveWindow.ScrollRow = 593
ActiveWindow.ScrollRow = 582
ActiveWindow.ScrollRow = 566
ActiveWindow.ScrollRow = 551
ActiveWindow.ScrollRow = 533
ActiveWindow.ScrollRow = 514
ActiveWindow.ScrollRow = 478
ActiveWindow.ScrollRow = 444
ActiveWindow.ScrollRow = 394
ActiveWindow.ScrollRow = 358
ActiveWindow.ScrollRow = 328
ActiveWindow.ScrollRow = 297
ActiveWindow.ScrollRow = 279
ActiveWindow.ScrollRow = 270
ActiveWindow.ScrollRow = 260
ActiveWindow.ScrollRow = 250
ActiveWindow.ScrollRow = 239
ActiveWindow.ScrollRow = 230
ActiveWindow.ScrollRow = 209
ActiveWindow.ScrollRow = 202
ActiveWindow.ScrollRow = 201
ActiveWindow.ScrollRow = 195
ActiveWindow.ScrollRow = 191
ActiveWindow.ScrollRow = 187
ActiveWindow.ScrollRow = 181
ActiveWindow.ScrollRow = 177
ActiveWindow.ScrollRow = 174
ActiveWindow.ScrollRow = 170
ActiveWindow.ScrollRow = 166
ActiveWindow.ScrollRow = 163
ActiveWindow.ScrollRow = 158
ActiveWindow.ScrollRow = 152
ActiveWindow.ScrollRow = 144
ActiveWindow.ScrollRow = 137
ActiveWindow.ScrollRow = 128
ActiveWindow.ScrollRow = 119
ActiveWindow.ScrollRow = 110
ActiveWindow.ScrollRow = 103
ActiveWindow.ScrollRow = 96
ActiveWindow.ScrollRow = 90
ActiveWindow.ScrollRow = 86
ActiveWindow.ScrollRow = 83
ActiveWindow.ScrollRow = 79
ActiveWindow.ScrollRow = 76
ActiveWindow.ScrollRow = 74
ActiveWindow.ScrollRow = 71
ActiveWindow.ScrollRow = 70
ActiveWindow.ScrollRow = 68
ActiveWindow.ScrollRow = 67
ActiveWindow.ScrollRow = 65
ActiveWindow.ScrollRow = 63
ActiveWindow.ScrollRow = 61
ActiveWindow.ScrollRow = 60
ActiveWindow.ScrollRow = 56
ActiveWindow.ScrollRow = 52
ActiveWindow.ScrollRow = 49
ActiveWindow.ScrollRow = 47
ActiveWindow.ScrollRow = 45
ActiveWindow.ScrollRow = 43
ActiveWindow.ScrollRow = 41
ActiveWindow.ScrollRow = 39
ActiveWindow.ScrollRow = 35
ActiveWindow.ScrollRow = 32
ActiveWindow.ScrollRow = 31
ActiveWindow.ScrollRow = 27
ActiveWindow.ScrollRow = 25
ActiveWindow.ScrollRow = 23
ActiveWindow.ScrollRow = 21
ActiveWindow.ScrollRow = 19
ActiveWindow.ScrollRow = 14
ActiveWindow.ScrollRow = 13
Range("BN13:BR638").Select
Range("BN638").Activate
Selection.Locked = False
Selection.FormulaHidden = False
ActiveWindow.ScrollColumn = 45
ActiveWindow.ScrollColumn = 41
ActiveWindow.ScrollColumn = 7
ActiveWindow.ScrollColumn = 5
ActiveWindow.SmallScroll Down:=-9
Range("D8").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Password:="art789", Scenarios:=True _
, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowSorting:=True, AllowFiltering:=True
End Sub
Когда вы впервые создаете макрос в книге, он работает только в ней. А если вам нужно использовать макрос в других книгах? Чтобы макросы были доступны при каждом запуске Excel, создайте их в книге с именем Personal.xlsb. Это скрытая книга, которая хранится на компьютере и открывается в фоновом режиме при каждом Excel.
Макросы и средства VBA находятся на вкладке Разработчик, которая по умолчанию скрыта, поэтому сначала нужно включить ее. Дополнительные сведения см. в статье Отображение вкладки "Разработчик".
Теперь создайте макрос. Мы зафиксим макрос, который ничего не делает, но создаст личную книгу макроса.
Дополнительные сведения о создании макросов см. в разделе Краткое руководство. Создание макроса.
Перейдите на вкладку Разработчик и нажмите кнопку Запись макроса.
В диалоговом окне Запись макроса не помешает ввести имя макроса в поле Имя макроса. Вы можете принять имя, которое Excel, например Макрос1, так как это просто временный макрос.
Когда вы начнете создавать собственные макросы, вам нужно будет дать им описательные имена, чтобы вы знали, что они делают.
В поле Сохранить в выберитеЛичная книга макроса и > ОК. Это самый важный шаг, так как если у вас еще нет личной книги макроса, Excel создаст ее.
Щелкните Разработчик > Остановитьзапись , Excel создайте личную книгу макроса.
При закрытии книги вам будет предложено сохранить как книгу, так и личную книгу макроса.
Чтобы увидеть созданный макрос:
Перейдите в >Visual Basic, чтобы запустить редактор Visual Basic (VBE),в котором хранятся макросы.
Книгу "Личные макросы" можно найти в области Project проводника слева. Если вы не видите его, перейдите в > Project проводник.
Дважды щелкните папку VBA Project (PERSONAL.xlsb) > Modules > Module1, и вы увидите пустой записанный макрос1. Вы можете удалить его или оставить, чтобы добавить код к более поздней.
Примечание: При записи макроса в новом экземпляре Excel VBA автоматически создает новую папку Module и ее номер прибавления. Поэтому если у вас уже есть Module1 и Module2, VBA создаст Модуль3. Модули можно переименовать в окне Свойства под обозревателем Project ,чтобы они лучше отражали то, что делают макрос внутри них.
Перемещение макросов на другой компьютер
Файл Personal.xlsB хранится в папке XLSTART. Если вы хотите поделиться макросами с другими, вы можете скопировать их в папку XLSTART на других компьютерах или скопировать некоторые или все макрос в файл Personal.xlsb на других компьютерах. Вы можете найти XLSTART в Windows проводнике.
Дополнительные сведения о копировании макросов из одной книги в другую см. в статье Копирование модуля макроса в другую книгу.
Убедитесь, что на ленте отображается вкладка Разработчик. По умолчанию вкладка Разработчик не отображается, поэтому сделайте следующее:
Перейдите в Excel > параметры. > ленты & панель инструментов.
В категории Настроить ленту в списке Основные вкладки установите флажок Разработчик, а затем нажмите кнопку Сохранить.
Теперь создайте макрос. Мы зафиксим макрос, который ничего не делает, но создаст личную книгу макроса.
Дополнительные сведения о создании макросов см. в разделе Краткое руководство. Создание макроса.
Перейдите на вкладку Разработчик и нажмите кнопку Запись макроса.
В диалоговом окне Запись макроса не помешает ввести имя макроса в поле Имя макроса. Вы можете принять имя, которое Excel, например Макрос1, так как это просто временный макрос.
Когда вы начнете создавать собственные макросы, вам нужно будет дать им описательные имена, чтобы вы знали, что они делают.
В поле Сохранить в выберитеЛичная книга макроса и > ОК. Это самый важный шаг, так как если у вас еще нет личной книги макроса, Excel создаст ее.
Щелкните Разработчик > Остановитьзапись , Excel создайте личную книгу макроса.
При закрытии книги вам будет предложено сохранить как книгу, так и личную книгу макроса.
Чтобы увидеть созданный макрос:
Книгу "Личные макросы" можно найти в области Project проводника слева. Если вы не видите его, перейдите в > Project проводник.
Дважды щелкните папку VBA Project (PERSONAL.xlsb) > Modules > Module1, и вы увидите пустой записанный макрос1. Вы можете удалить его или оставить, чтобы добавить код к более поздней.
Примечание: При записи макроса в новом экземпляре Excel VBA автоматически создает новую папку Module и ее номер прибавления. Поэтому если у вас уже есть Module1 и Module2, VBA создаст Модуль3. Модули можно переименовать в окне Свойства под обозревателем Project ,чтобы они лучше отражали то, что делают макрос внутри них.
Перемещение макросов на другой компьютер
Файл Personal.xlsB хранится в папке запуска системы. Если вы хотите поделиться макросами с другими, можно скопировать Personal.xlsb в папку запуска на других компьютерах или скопировать некоторые или все макрос макроса в файл Personal.xlsb на других компьютерах. В Finder выберите Перейти, а затем, удерживая клавишу OPTION, выберите Библиотека. В области Библиотека перейдите к группе Containers > xyz.Office (где xyz — это текстовая строка, например "UBF8T346G9") > User Content > Startup > Excel. В Personal.xlsb в Excel папку.
Дополнительные сведения о копировании макросов из одной книги в другую см. в статье Копирование модуля макроса в другую книгу.
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.
Читайте также: