Sim. No VB Editor, vá para o objeto ThisWorkbook. Na parte superior da janela de código, você verá uma caixa suspensa que diz "(Geral)" ou "Pasta de trabalho". Se estiver escrito "(Geral)", abra a lista suspensa e escolha "Pasta de trabalho". Pode também inserir um novo sub para você imediatamente; se isso acontecer, basta apagar isso.
Agora, no canto superior direito, você tem outro menu suspenso que provavelmente diz "Abrir". Use o menu suspenso para escolher "Abrir" e, novamente, escolha "Ativar Folha". Isso deve inserir duas novas sub-rotinas em sua janela de código - Workbook_Open
e Sheet_Activate
. Observe que você deseja criar esses usando os menus suspensos, não apenas digitando os nomes - eles podem não funcionar corretamente se você simplesmente os digitar.
Agora você pode colocar qualquer código que desejar nesses subs e o código será executado quando detectar o evento em questão (ou seja, abrir a pasta de trabalho ou selecionar qualquer planilha). A estrutura exata que você solicitou se pareceria com algo assim:
Private Sub Workbook_Open()
Application.Calculate
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Application.Calculate
End Sub
Não estou dizendo que essa é a maneira mais eficiente de fazer isso, mas isso deve responder à sua pergunta.