Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
Avatar do usuário
Por Celsosilverio
Posts Avatar
#64845
Olá!

Option Explicit

Private Sub Worksheet_Activate()
MsgBox (" Favor GERAR RELATÓRIO para atualização.")
End Sub

Uso esse código na planilha, que é apenas um aviso. Funciona perfeito.
Ocorre que ao fechar a minha planilha esse aviso também abre, daí tenho que fechar um por um, porque eu estou utilizando uma macro para ocultar planilhas, que é a seguinte:

Sub Ocultar_planilha()
Desproteger_pasta
Sheets("REL_SAÍ").Select
ActiveWindow.SelectedSheets.Visible = False

Sheets("REL_ENT").Select
ActiveWindow.SelectedSheets.Visible = False

Sheets("MOV_ESTOQUE").Select
ActiveWindow.SelectedSheets.Visible = False

Proteger_pasta
End Sub

Teria algum jeito de adaptar para que ao fechar a planilha não aparecesse referida a mensagem?

Abraços
Por osvaldomp
#64848
Experimente:
Código: Selecionar todos
Sub Ocultar_planilha()
 Desproteger_pasta
 Sheets("REL_SAÍ").Visible = False
 Sheets("REL_ENT").Visible = False
 Sheets("MOV_ESTOQUE").Visible = False
 Proteger_pasta
End Sub
Por osvaldomp
#64854
Olá, Celso.

Para ajudar na identificação do seu problema seria oportuno você disponibilizar diretamente aqui no fórum uma amostra do seu arquivo Excel com as 3 planilhas (podem estar vazias), todos os códigos VBA instalados, e informe com exatidão em que situações indesejadas aparece a mensagem.
Por osvaldomp
#64856
Celso, com o código que passei, aqui funciona conforme o requerido, ou seja, ao fechar o arquivo as mensagens não são exibidas.
Veja se no arquivo anexo o código funciona a contento aí. É uma cópia do seu arquivo original, apenas inseri o código que passei e desativei o seu código original.
Você não está autorizado a ver ou baixar esse anexo.
Por osvaldomp
#64861
Celso, por curiosidade e também para aprendizado: porque antes não funcionou? O que você havia feito de diferente do que eu fiz?
Avatar do usuário
Por Celsosilverio
Posts Avatar
#64862
Osvaldo, aqui nesse código não funcionou:

Sub Ocultar_planilha()

Desproteger_pasta

Sheets("ENTRADAS").Select
ActiveWindow.SelectedSheets.Visible = False

'Sheets("REL_SAÍ").Select
'ActiveWindow.SelectedSheets.Visible = False
Sheets("REL_SAÍ").Visible = False

Sheets("CAD_PROD").Select
ActiveWindow.SelectedSheets.Visible = False

Sheets("CAD_FORN").Select
ActiveWindow.SelectedSheets.Visible = False

Sheets("ESTOQUE").Select
ActiveWindow.SelectedSheets.Visible = False

Sheets("SAIDAS").Select
ActiveWindow.SelectedSheets.Visible = False

Sheets("CAD_CLIENTES").Select
ActiveWindow.SelectedSheets.Visible = False

'Sheets("REL_ENT").Select
'ActiveWindow.SelectedSheets.Visible = False
Sheets("REL_ENT").Visible = False

'Sheets("MOV_ESTOQUE").Select
'ActiveWindow.SelectedSheets.Visible = False
Sheets("MOV_ESTOQUE").Visible = False

Sheets("CAPA").Select
Range("G39").Select

Proteger_pasta

End Sub


JÁ AQUI NESSE CÓDIGO, FUNCIONOU PERFEITO:

Sub Ocultar_planilha()

Desproteger_pasta

Sheets("ENTRADAS").Visible = False
Sheets("CAD_PROD").Visible = False
Sheets("CAD_FORN").Visible = False
Sheets("ESTOQUE").Visible = False
Sheets("SAIDAS").Visible = False
Sheets("CAD_CLIENTES").Visible = False
Sheets("REL_SAÍ").Visible = False
Sheets("REL_ENT").Visible = False
Sheets("MOV_ESTOQUE").Visible = False

Proteger_pasta

End Sub

Eu também não entendi o porque não funcionou :D :D
Por osvaldomp
#64863
Celso, o primeiro código do seu último post provoca a exibição da mensagem pelo seguinte: para algumas planilhas a serem ocultadas você manteve no código o comando Select, então o código ativa/seleciona a planilha para depois ocultá-la, e ao ocultá-la, automaticamente o Excel torna ativa/seleciona a planilha vizinha à direita daquela que foi ocultada, dessa forma, se a planilha à direita contiver o código que exibe a mensagem então "indiretamente" o código será disparado e a mensagem será exibida.

Já o segundo código oculta as planilhas sem selecioná-las, e se no momento de rodar o código a planilha ativa for a CAPA, suponho que seja esse o seu caso, essa continuará ativa até o final da execução pois ela não é ocultada pelo código, por isso a seleção/ativação não muda de planilha e assim não dispara "indiretamente" os códigos que exibem a mensagem.

A propósito, o comando Select provoca aumento no tempo de execução do código, provoca "movimentação na tela", reduz a flexibilidade na elaboração do código e raramente é necessário. Portanto, o seu uso é altamente não recomendável.

Seguem abaixo duas sugestões como alternativas.
Código: Selecionar todos
Sub Ocultar_planilha()
 Dim WS As Worksheet
  Desproteger_pasta
  For Each WS In ThisWorkbook.Worksheets
   If WS.Name <> "CAPA" Then WS.Visible = False
  Next WS
  Proteger_pasta
End Sub
Código: Selecionar todos
Sub Reexibir_planilha()
 Dim WS As Worksheet
  Application.ScreenUpdating = False
  Desproteger_pasta
  For Each WS In ThisWorkbook.Worksheets
   WS.Visible = True
  Next WS
  Sheets("CAPA").Activate
  Range("G39").Select
  Proteger_pasta
End Sub
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord