2015-07-17 1 views
0

У меня есть макрос, который в настоящее время работает в 4 листах, которые выделяют строки ячеек в определенном диапазоне (диапазоны отличаются для каждого листа), но чтобы сохранить рабочий лист в чистоте и не оставлять выделение, которое оно имеет встроенная в него строка, которая сообщает ему очистить выделение, когда я нажимаю на ячейку A6 в каждом из листов, где содержится макрос. Моя проблема заключается в том, что другие пользователи, которые используют рабочий лист, следуют этому методу, поэтому я пытаюсь выяснить, есть ли способ использовать функцию Workbook_BeforeSave для очистки всей подсветки на листах при сохранении файла.Запуск рабочих табличных модулей при сохранении

Есть ли способ перебора «четкого форматирования», который существует в каждом листе из модуля рабочей книги? Клиринговый код в рабочем листе модулей выглядит следующим образом (но я не могу заставить его работать в модуле рабочей книги):

Dim bInRange As Boolean 
Static rOld As Range 

If Not bInRange Then 
Set rOld = Nothing 
Exit Sub 
End If 

ответ

2

Создать саб для вашего кода. Что-то вроде этого.

Private sub RunMyCode() 
    Dim bInRange As Boolean 
    Static rOld As Range 

    If Not bInRange Then 
     Set rOld = Nothing 
     Exit Sub 
    End If 
End sub 

Private Sub Workbook_BeforeClose(Cancel as Boolean) 
    'Call it before your workbook is closed 
    RunMyCode 
End Sub 
1

Вы можете запустить код, как такие

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 

call sheet1.clear_formatting 
call sheet2.clear_formatting 
call sheet3.clear_formatting 
call sheet4.clear_formatting 
end sub 

sheet1 isthe кодового имени для этого листа, вы можете также использовать листы ("sheet1"). Clear_formatting, если это проще

или если у вас есть много листов, вы можете сделать

for each ws in activeworkbook.sheets 
    call ws.clear_formatting 
next 
Смежные вопросы