O Excel 2010 só permite ativar ou desativar quebras de página para uma planilha por vez viaArquivo → Opções → Avançado → "Exibir opções para esta planilha":
Anteriormente, criei uma macro VBA para alternar quebras de página, mas ela só funciona na planilha que tenho ativa:
Sub TogglePageBreaks()
ActiveSheet.DisplayPageBreaks = Not ActiveSheet.DisplayPageBreaks
End Sub
A próxima questão lógica (que alguém me apontou) é como faço para usar uma macro para alternar a exibição de quebras de página paratodosplanilhas na pasta de trabalho ativa?
Sendo novo no VBA, passei algumas horas pesquisando como percorrer planilhas e também como funciona o objeto DisplayPageBreaks. Eu encontrei uma resposta abaixo.
Responder1
Aqui está o que consegui descobrir. Testei-o com sucesso no Excel 2010. Sou muito novo no VBA, então lutei com isso por um tempo. ws.Activate
foi a chave, pois DisplayPageBreaks
se aplica apenas à planilha ativa. Crédito paraPostagem de RocketDonkeypor me fazer perceber isso. Crédito também paraRick Rothsteinpara o conceito de código de alternância lindamente simples que apliquei em minha resposta.
Sub ToggleWkBkPageBreaks()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
ActiveSheet.DisplayPageBreaks = True + False - ActiveSheet.DisplayPageBreaks
Next ws
End Sub
Responder2
Isso deve ser mais eficiente que o seu exemplo.
Desativar a atualização de tela é uma boa prática básica ao fazer coisas que atrapalham o visual (como ativar planilhas). Além disso, 2013 não requer ativação de planilha para alternar quebras de página.
Então... aqui está:
Sub ToggleWkBkPageBreaks() ' start of public sub (private sub and function would not appear in macro menu in excel, would only be accessible to the code in the module)
'Declaring variables
Dim ws As Worksheet 'worksheet object
Dim is2010OrLess As Boolean 'true or false variable (= type 'boolean')
is2010OrLess = cint(Application.Version) > 15 ' check version (version "15.0" = excel 2013)
Application.ScreenUpdating = False ' disable screen updating
'do operations with ScreenUpdating turned off
For Each ws In ThisWorkbook.Worksheets ' loop start (for each type, based on the sheet collection, hence the need for the ws object for the loop)
If is2010OrLess = True then ws.Activate ' if version is less than exce3l2013, activate sheet. Else, don't activate the sheet (because it's unnecessary).
ws.DisplayPageBreaks = not ws.DisplayPageBreaks ' .dysplayPagebreaks yelds a true or false so, we change it to ('=') the inverse (not true/not false)
Next ws ' next sheet
Application.ScreenUpdating = True ' Re-enable screen updating
End Sub