none
Ocultar e visualizar planilhas RRS feed

  • Pergunta

  • Se eu tentar tornar visível uma planilha que já está visível, ou ocultar uma que já está oculta resulta em erro?

    Haviam me sugerido aqui no fórum que eu utilizasse o seguinte método:

    Dim mostraplan as boolean
    
    ' para tornar visível
    Mostraplan = Sheets("Monitoramento").Visible = False
    If Mostraplan Then Sheets("Monitoramento").Visible = True
    
    '  para ocultar
    Mostraplan = Sheets("Monitoramento").Visible = true
    If Mostraplan Then Sheets("Monitoramento").Visible = false

    No entanto sempre retorna erro em algum momento e aí me aconselharam fazer mais direto:

    plan1.visible=xlhidden

    ou

    plan1.visible=xlvisible,

    mas continua retornando erros em planilhas diferentes a cada vez e qdo executo a macro pela tecla de atalho, ou pelo visualizador de macros ela executa sem erro.

    Obrigado


    Rui Martins

    terça-feira, 12 de maio de 2015 15:32

Respostas

  • Visible é uma propriedade do objeto Worksheet que pode ter três estados: xlSheetVisible, xlSheetHidden, xlSheetVeryHidden. Logo, usar True ou False não faz sentido para alterar essas propriedades.

    ---

    Se você tiver apenas uma planilha visível numa pasta de trablaho e tentar oculta-la, obterá um erro. Se tentar tornar uma planilha visível que já estava visível antes, não obterá erro e ela continuará visível.

    ---

    Se você está usando mais de uma pasta de trabalho na macro, pode ser que esteja obtendo erros porque Sheets("Monitoramento") é a mesma coisa que ActiveWorkbook.Sheets("Monitoramento"). Daí, se no momento da execução dessa instrução outra pasta de trabalho estiver ativa, o Excel tnetará acessar a planilha Monitoramento de outra pasta de trabalho que, se não existir, irá gerar um erro.

    O mais seguro nesse caso é utilizar ThisWorkbook.Worksheets("Monitoramento"). Se quiser acessar outra pasta de trabalho, faça:

    Sub Main()
        Dim wb As Workbook
        
        Set wb = Workbooks.Open("c:\pasta1.xlsx")
        
        wb.Worksheets("Plan1").Range("A1").Value = "Teste!"
        
        wb.Close SaveChanges:=False
        Set wb = Nothing
    End Sub
    


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    terça-feira, 12 de maio de 2015 21:23
    Moderador

Todas as Respostas

  • Visible é uma propriedade do objeto Worksheet que pode ter três estados: xlSheetVisible, xlSheetHidden, xlSheetVeryHidden. Logo, usar True ou False não faz sentido para alterar essas propriedades.

    ---

    Se você tiver apenas uma planilha visível numa pasta de trablaho e tentar oculta-la, obterá um erro. Se tentar tornar uma planilha visível que já estava visível antes, não obterá erro e ela continuará visível.

    ---

    Se você está usando mais de uma pasta de trabalho na macro, pode ser que esteja obtendo erros porque Sheets("Monitoramento") é a mesma coisa que ActiveWorkbook.Sheets("Monitoramento"). Daí, se no momento da execução dessa instrução outra pasta de trabalho estiver ativa, o Excel tnetará acessar a planilha Monitoramento de outra pasta de trabalho que, se não existir, irá gerar um erro.

    O mais seguro nesse caso é utilizar ThisWorkbook.Worksheets("Monitoramento"). Se quiser acessar outra pasta de trabalho, faça:

    Sub Main()
        Dim wb As Workbook
        
        Set wb = Workbooks.Open("c:\pasta1.xlsx")
        
        wb.Worksheets("Plan1").Range("A1").Value = "Teste!"
        
        wb.Close SaveChanges:=False
        Set wb = Nothing
    End Sub
    


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    terça-feira, 12 de maio de 2015 21:23
    Moderador
  • Obrigado.

    Rui Martins

    quarta-feira, 13 de maio de 2015 02:19