Notifications
Clear all

Inclusão de nome em determinada célula de acordo com login

6 Posts
2 Usuários
0 Reactions
1,053 Visualizações
(@marcelst)
Posts: 3
New Member
Topic starter
 

Bom dia!

Estou com uma dúvida, gostaria que vocês pudessem me ajudar. :D
Eu tenho uma planilha onde coloquei um formulário para colocar login e senha.
O arquivo tem as abas "CAPA", "CALCULO", "NOVO" e "RESULTADO"

Para login tenho três situações:

- Caso o login e senha estejam incorretos, aparece apenas a "CAPA".

- Caso o login seja do gestor, ele verá todas as abas.

- Caso o login seja de um analista, ele verá apenas as abas "CAPA" e "RESULTADO". É aqui que tenho o problema.

Quando o analista acessar o arquivo, preciso que a célula E4 da aba "RESULTADO" seja preenchido com o login.

Achei que fazendo um Sheets("RESULTADO").Select daria certo, mas não deu.

Case "ANALISTA"
        Planilhas = Array("Resultado", "Capa")
        Sheets("Resultado").Selected
   
   For coluna = 5 To 5
   For linha = 4 To 4

        Cells(linha, coluna) = "ANALISTA"
    Next linha
    Next coluna
       Range("A1").Select
       
       Sheets("Resultado").Select
   
           On Error Resume Next
            For Each Ws In ThisWorkbook.Worksheets
                Pos = Application.Match(Ws.Name, Planilhas, 0)
            If Pos <> 0 Then
                Ws.Visible = True
                    Pos = 0
            Else
                Ws.Visible = xlSheetVeryHidden
                    Pos = 0
            End If
                   
          If Usuário = "ANALISTA" Then
            Range("C1:C50").Protect , DrawingObjects:=True, _
               Contents:=True, Scenarios:=True

         ElseIf Usuário = "ADMIN" Then
            MsgBox ("Sheet not protected")
 
   End If
            
Next Ws

Obrigado pela ajuda!

 
Postado : 07/04/2015 8:14 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Eu faria assim:

    Case "ANALISTA"

        With ThisWorkbook
            With .Worksheets("Capa")
                If .Visible = xlSheetVeryHidden Then    'isso é necessário, pois o VBA não muda direto de
                        .Visible = xlSheetHidden        'veryhidden pra visible em tempo de execução
                End If
                .Visible = xlSheetVisible
            End With
            With .Worksheets("Resultado")
                .Cells(4, 5) = "ANALISTA"
                If .Visible = xlSheetVeryHidden Then    'isso é necessário, pois o VBA não muda direto de
                        .Visible = xlSheetHidden        'veryhidden pra visible em tempo de execução
                End If
                .Visible = xlSheetVisible
            End With
        End With
        Sheets("Resultado").Select
        
        For Each ws In ThisWorkbook.Worksheets
            With ws
                If .Name <> "Capa" And .Name <> "Resultado" Then
                    .Visible = xlSheetVeryHidden
                End If

                If Usuário = "ANALISTA" Then
                    .Range("C1:C50").Protect , DrawingObjects:=True, Contents:=True, Scenarios:=True
    
                ElseIf Usuário = "ADMIN" Then
                    MsgBox ("Sheet not protected")
    
                End If
            End With

        Next ws

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

 
Postado : 07/04/2015 8:38 am
(@marcelst)
Posts: 3
New Member
Topic starter
 

Obrigado pela ajuda, Fernando!

Eu utilizei o seu código, mas deu um erro dizendo que eu estava tentando alterar uma planilha protegida. Bem como você mencionou nos comentários do código, mas não funcionou muito bem comigo...

Obrigado!
---
Ignore o meu comentário anterior. To confundindo as coisas aqui. rsrs
---
O erro que aparece é o seguinte:

"Erro em tempo de execução '438':

O objeto não aceita esta propriedade ou método"

Porém ele está preenchendo corretamente o campo que deve ser preenchido.

 
Postado : 07/04/2015 9:19 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Vc precisa dizer em qual linha acontece o erro, assim fica mais fácil eu ajudar..

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

 
Postado : 07/04/2015 10:30 am
(@marcelst)
Posts: 3
New Member
Topic starter
 

Agora deu certo!

Eu tirei esse trecho:

      If Usuário = "ANALISTA" Then
                    .Range("C1:C50").Protect , DrawingObjects:=True, Contents:=True, Scenarios:=True

Muito obrigado, Fernando!!

 
Postado : 07/04/2015 10:55 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Blz... eu confesso que imaginei que essa linha daria erro, pois não existe método Protect no objeto Range.

Mas acabei deixando passar !

Que bom que deu certo, abs,

FF

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

 
Postado : 07/04/2015 11:01 am