В книге (пример прилагается) есть несколько макросов в стандартном модуле:
(1) макрос, чтобы изменить цвет шрифта заголовка;
(2) макрос, чтобы "стартовала" нумерация;
(3) макрос по настройке параметров страницы;
(4) макрос по настройке параметров страницы;
(5) макрос на заданию области печати.
На определенном этапе (а именно, после того, как выполним макрос 1 и изменим цвет шрифта заголовка) нужно вставить в модуль книги (термин взял из Справочник по макросам) макрос автонумерации строк (макрос взял отсюда): [vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal target As Range) 'http://www.cyberforum.ru/vba/thread225190.html Application.EnableEvents = False For Each oCell In Range([B2], Cells(Rows.Count, "B")).Cells If Not IsEmpty(oCell) Then iCount = iCount + 1: oCell.Previous = iCount Next Application.EnableEvents = True End Sub
[/vba] А потом следует продолжить выполнение следующих макросов. Вопрос, можно ли после выполнения первого макроса автоматически вставить в модуль книги макрос автонумерации и продолжить выполнение следующих макросов? Спасибо.
В книге (пример прилагается) есть несколько макросов в стандартном модуле:
(1) макрос, чтобы изменить цвет шрифта заголовка;
(2) макрос, чтобы "стартовала" нумерация;
(3) макрос по настройке параметров страницы;
(4) макрос по настройке параметров страницы;
(5) макрос на заданию области печати.
На определенном этапе (а именно, после того, как выполним макрос 1 и изменим цвет шрифта заголовка) нужно вставить в модуль книги (термин взял из Справочник по макросам) макрос автонумерации строк (макрос взял отсюда): [vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal target As Range) 'http://www.cyberforum.ru/vba/thread225190.html Application.EnableEvents = False For Each oCell In Range([B2], Cells(Rows.Count, "B")).Cells If Not IsEmpty(oCell) Then iCount = iCount + 1: oCell.Previous = iCount Next Application.EnableEvents = True End Sub
[/vba] А потом следует продолжить выполнение следующих макросов. Вопрос, можно ли после выполнения первого макроса автоматически вставить в модуль книги макрос автонумерации и продолжить выполнение следующих макросов? Спасибо.pashkovsky
Может и есть путь более простой. Но я нашел только один работающий макрос для автоматической нумерации и тот вставляется только в модуль книги: [vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal target As Range) 'http://www.cyberforum.ru/vba/thread225190.html Application.EnableEvents = False For Each oCell In Range([B2], Cells(Rows.Count, "B")).Cells If Not IsEmpty(oCell) Then iCount = iCount + 1: oCell.Previous = iCount Next Application.EnableEvents = True End Sub
[/vba]
Может и есть путь более простой. Но я нашел только один работающий макрос для автоматической нумерации и тот вставляется только в модуль книги: [vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal target As Range) 'http://www.cyberforum.ru/vba/thread225190.html Application.EnableEvents = False For Each oCell In Range([B2], Cells(Rows.Count, "B")).Cells If Not IsEmpty(oCell) Then iCount = iCount + 1: oCell.Previous = iCount Next Application.EnableEvents = True End Sub
Переделал немного макрос из приватного в публичный. Получилось: [vba]
Код
Sub Workbook_SheetChange() 'http://www.cyberforum.ru/vba/thread225190.html Dim Sh As Worksheet ' For Each Sh In Sheets For Each oCell In Range([B2], Cells(Rows.Count, "B")).Cells If Not IsEmpty(oCell) Then iCount = iCount + 1: oCell.Previous = iCount Next End Sub
[/vba] Но нумерация вставляется только в активный лист, в другие - нет. Как можно распространить действие макроса на другие листы?
Переделал немного макрос из приватного в публичный. Получилось: [vba]
Код
Sub Workbook_SheetChange() 'http://www.cyberforum.ru/vba/thread225190.html Dim Sh As Worksheet ' For Each Sh In Sheets For Each oCell In Range([B2], Cells(Rows.Count, "B")).Cells If Not IsEmpty(oCell) Then iCount = iCount + 1: oCell.Previous = iCount Next End Sub
[/vba] Но нумерация вставляется только в активный лист, в другие - нет. Как можно распространить действие макроса на другие листы?pashkovsky
Я предполагал вставлять автонумерацию после предварительного форматирования таблицы с помощью макросов. Можно вручную вставлять указанный макрос. Но тогда придется делить остальные макросы на две группы - до вставки автонумерации и после. Вот такая была идея.
Я предполагал вставлять автонумерацию после предварительного форматирования таблицы с помощью макросов. Можно вручную вставлять указанный макрос. Но тогда придется делить остальные макросы на две группы - до вставки автонумерации и после. Вот такая была идея.pashkovsky
Нужно, чтобы указанный макрос на определенном этапе форматирования книги вставлялся в Модуль книги и выполнялся, а после этого продолжали выполняться другие макросы. В приложенном файле видно, когда именно планировалась вставка макроса и его выполнение.
Нужно, чтобы указанный макрос на определенном этапе форматирования книги вставлялся в Модуль книги и выполнялся, а после этого продолжали выполняться другие макросы. В приложенном файле видно, когда именно планировалась вставка макроса и его выполнение.pashkovsky
Sub Нумерация() Dim Sh As Worksheet, rCell As Range, lCount& Application.EnableEvents = False For Each Sh In Sheets lCount = 0 For Each rCell In Sh.Range("B2", Sh.Cells(Rows.Count, "B").End(xlUp)) If Not IsEmpty(rCell) Then lCount = lCount + 1: rCell.Offset(0, -1) = lCount Next rCell Next Sh Application.EnableEvents = True End Sub
[/vba]
[vba]
Код
Sub Нумерация() Dim Sh As Worksheet, rCell As Range, lCount& Application.EnableEvents = False For Each Sh In Sheets lCount = 0 For Each rCell In Sh.Range("B2", Sh.Cells(Rows.Count, "B").End(xlUp)) If Not IsEmpty(rCell) Then lCount = lCount + 1: rCell.Offset(0, -1) = lCount Next rCell Next Sh Application.EnableEvents = True End Sub
Sub КрасимЗаголовок() Dim Sh As Worksheet For Each Sh In Sheets Sh.Range("A1:P1").Font.ColorIndex = 3 Set r = Sh.Range(Sh.Cells(2, "B"), Sh.Cells(Rows.Count, "B").End(xlUp)).Offset(, -1) r.FormulaLocal = "=СТРОКА()-1" r.Value = r.Value Set r = Nothing Next End Sub
[/vba]
Проблема не стоит высиженного яйца [vba]
Код
Sub КрасимЗаголовок() Dim Sh As Worksheet For Each Sh In Sheets Sh.Range("A1:P1").Font.ColorIndex = 3 Set r = Sh.Range(Sh.Cells(2, "B"), Sh.Cells(Rows.Count, "B").End(xlUp)).Offset(, -1) r.FormulaLocal = "=СТРОКА()-1" r.Value = r.Value Set r = Nothing Next End Sub
Нужно, чтобы указанный макрос на определенном этапе форматирования книги вставлялся в Модуль книги и выполнялся
А вот это вообще полная чушь! Вы хоть сами понимаете, о чём пишете? При чём здесь модуль книги?
Да и использование не документированного для объекта Range свойства .Previous чревато неожиданными последствиями. Это свойство документировано только для примечаний (объектов Comment). А для Range надо использовать свойство .Offset.
Нужно, чтобы указанный макрос на определенном этапе форматирования книги вставлялся в Модуль книги и выполнялся
А вот это вообще полная чушь! Вы хоть сами понимаете, о чём пишете? При чём здесь модуль книги?
Да и использование не документированного для объекта Range свойства .Previous чревато неожиданными последствиями. Это свойство документировано только для примечаний (объектов Comment). А для Range надо использовать свойство .Offset.Alex_ST