Запустите модули рабочего листа при сохранении

У меня есть макрос, который в настоящее время выполняется в 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

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

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 - это кодовое имя для этого листа, вы также можете использовать листы ("sheet1").clear_formatting, если это проще

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

for each ws in activeworkbook.sheets
    call ws.clear_formatting
next
Другие вопросы по тегам