Notifications
Clear all

Ocultar colunas e bloquear re-exibir via VBA

7 Posts
3 Usuários
0 Reactions
1,457 Visualizações
(@weberfso)
Posts: 3
New Member
Topic starter
 

Bom dia Pessoal!

Sou novato no fórum e também em VBA. Porém estou com um pequeno problema pra resolver e gostaria da ajuda de vocês.

Criei uma tela de login e senha, bloqueei que alguns usuários acessem determinadas planilhas. E em algumas planilhas que o usuário tem acesso, bloqueei a visualização de algumas colunas. Porém o mesmo consegue com o botão direito re-exibir coluna. Já tentei esse bloquei via Proteção da Planilha (procedimento padrão) mas não obtive sucesso.

Desde já agradeço a ajuda.

 
Postado : 09/05/2018 6:56 am
xlarruda
(@xlarruda)
Posts: 732
Honorable Member
 

Ocultando a coluna "B".

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Columns(2).EntireColumn.Hidden = False Then
 Columns(2).EntireColumn.Hidden = True
 End If
End Sub

Isso aqui deve resolver. Só não consegui um evento melhor para inserir o comando. De repente algum colega tem uma sugestão melhor que a minha.

___________________________________________________________________________________________
Se a resposta atendeu sua dúvida, por favor, clique no Gostei e marque o Tópico como [Resolvido].

Att.

André Arruda

 
Postado : 09/05/2018 7:05 am
(@weberfso)
Posts: 3
New Member
Topic starter
 

Obrigado. Porém não sei se coloquei no lugar errado, mas não funcionou não.

Segue o código abaixo que estou usando dentro do botão de login. Acredito que deve ter maneira mais eficiente de fazer, porém foi a única que consegui. Quando o usuário for esse usuário vai habilitar a plano FLUXO_ANALITICO e desabilitar as colunas J,L,M.N,O.

ElseIf usuario = "padrao" And senha = "padrao" Then

ActiveWorkbook.Unprotect Password:="admin2018"

Sheets("Fluxo_Analítico").Visible = True
Columns("J").EntireColumn.Hidden = True
Columns("L").EntireColumn.Hidden = True
Columns("M").EntireColumn.Hidden = True
Columns("N").EntireColumn.Hidden = True
Columns("O").EntireColumn.Hidden = True

O problema que lá no excel o botão direito ele consegue re-exibir as colunas J,L,M.N,O.

 
Postado : 09/05/2018 7:22 am
xlarruda
(@xlarruda)
Posts: 732
Honorable Member
 

A idéia é essa mesmo. Mas esse código deve ser inserido no projeto da Planilha que você quer Ocultar as colunas. Se inserir em "Esta_Pasta_de_Trabalho" ou em algum modulo não irá funcionar

___________________________________________________________________________________________
Se a resposta atendeu sua dúvida, por favor, clique no Gostei e marque o Tópico como [Resolvido].

Att.

André Arruda

 
Postado : 09/05/2018 8:11 am
(@weberfso)
Posts: 3
New Member
Topic starter
 

Coloquei no projeto da planilha. Porém só oculta a coluna. Mas o usuário consegue clicar com botão direito pra re-exibir. Para o usuário PADRAO é pra ocultar e não deixar ele re-exibir. Para o usuário ADMIN ao logar na planilha ja trazer as colunas visíveis.

 
Postado : 09/05/2018 8:29 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!

Acredito que o usuário não vai conseguir re-exibir as colunas somente se a planilha for protegida, como no exemplo abaixo:

Sheets("Fluxo_Analítico").Unprotect "Senha"

Columns("J").EntireColumn.Hidden = True
Columns("L").EntireColumn.Hidden = True
Columns("M").EntireColumn.Hidden = True
Columns("N").EntireColumn.Hidden = True
Columns("O").EntireColumn.Hidden = True

Sheets("Fluxo_Analítico").Protect "Senha"

Se ele tem permissão para editar algumas células, tem de deixá-las desbloqueadas. Exemplo:

Range("A1").Locked = False
Columns("B:E").Locked = False

O trecho completo do código ficaria assim:

Sheets("Fluxo_Analítico").Unprotect "Senha"

Columns("J").EntireColumn.Hidden = True
Columns("L").EntireColumn.Hidden = True
Columns("M").EntireColumn.Hidden = True
Columns("N").EntireColumn.Hidden = True
Columns("O").EntireColumn.Hidden = True

Range("A1").Locked = False
Columns("B:E").Locked = False

Sheets("Fluxo_Analítico").Protect "Senha"

Abraço

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 09/05/2018 8:50 am
xlarruda
(@xlarruda)
Posts: 732
Honorable Member
 

Colega JValq matou a questão.

Como sugestão, insira o codigo dele em Esta_pasta_de_Trabalho >>> No evento "Wrokbook_Open"...

___________________________________________________________________________________________
Se a resposta atendeu sua dúvida, por favor, clique no Gostei e marque o Tópico como [Resolvido].

Att.

André Arruda

 
Postado : 09/05/2018 10:40 am