Запустите модули рабочего листа при сохранении
У меня есть макрос, который в настоящее время выполняется в 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