Вот как я кодирую свои командные кнопки на листе:
Option Explicit
Public WS As Worksheet ' global Worksheet object
Private Sub InsertNextWeek_Button1_Click()
'Button to call the Insert Next Week subprocedure
'Save the current active worksheet
Set WS = ThisWorkbook.ActiveSheet
'Run procedure to Insert 7 new rows for Next Week
Call Insert_NextWeek
'Make this worksheet is left as the active worksheet
WS.Activate
'clear worksheet variable
Set WS = Nothing
End Sub
Private Sub PublishRunStats_Button6_Click()
'Button to call the Publish RunStats subprocedure
'Save the current active worksheet
Set WS = ThisWorkbook.ActiveSheet
'Run procedure to Save the Run Stats worksheet to a new workbook
Call Publish_RunStats_Sheet
'Make this worksheet is left as the active worksheet
WS.Activate
'clear worksheet variable
Set WS = Nothing
End Sub
Вызываемые подпроцедуры закодированы как Открытые в Модуле 1 той же Рабочей книги.
Глобальный объект WS используется в каждой подпрограмме командной кнопки, чтобы гарантировать, что фокус моего отображения снова окажется на том же рабочем листе, на котором только что нажата командная кнопка.