Ir ao conteúdo

Posts recomendados

Postado

Veja tenho esses códigos que ligam a "tela cheia e desliga", o problema é o seguinte, quando eu abro outra planilha ele matem a tela cheia, queria ativar somente no mesmo arquivos. E também queria fazer uma forma que ele irá  "ligar tela cheia"  de acordo com um critérios de usuários exemplos:

 

Por favor alguém me ajude.

 

 

Usuário       Senha     Tela 

admin          admin      lsDesligarTelaCheia

guest          123           lsLigarTelaCheia

 

Códigos ligar e desligar tela:

Sub lsLigarTelaCheia()
    'Oculta todas as guias de menu
    Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
 
    'Ocultar barra de fórmulas
    Application.DisplayFormulaBar = False
 
    'Ocultar barra de status, disposta ao final da planilha
    Application.DisplayStatusBar = False
 
    'Alterar o nome do Excel
    Application.Caption = "Versão 1.0"
 
    With ActiveWindow
        'Ocultar barra horizontal
        .DisplayHorizontalScrollBar = False
 
        'Ocultar barra vertical
        .DisplayVerticalScrollBar = False
 
        'Ocultar guias das planilhas
        .DisplayWorkbookTabs = False
 
        'Oculta os títulos de linha e coluna
        .DisplayHeadings = False
 
        'Oculta valores zero na planilha
        .DisplayZeros = False
 
        'Oculta as linhas de grade da planilha
        .DisplayGridlines = False
    End With
End Sub
 
Sub lsDesligarTelaCheia()
    'Reexibe os menus
    Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",True)"
 
    'Reexibir a barra de fórmulas
    Application.DisplayFormulaBar = True
 
    'Reexibir a barra de status, disposta ao final da planilha
    Application.DisplayStatusBar = True
 
    'Reexibir o cabeçalho da Pasta de trabalho
    ActiveWindow.DisplayHeadings = True
 
 
    'Retornar o nome do Excel
    Application.Caption = ""
 
    With ActiveWindow
        'Reexibir barra horizontal
        .DisplayHorizontalScrollBar = True
 
        'Reexibir barra vertical
        .DisplayVerticalScrollBar = True
 
        'Reexibir guias das planilhas
        .DisplayWorkbookTabs = True
 
        'Reexibir os títulos de linha e coluna
        .DisplayHeadings = True
        'Reexibir valores zero na planilha
        .DisplayZeros = True
 
        'Reexibir as linhas de grade da planilha
        .DisplayGridlines = True
    End With
End Sub

 

Código user form do login 

 

Private Sub CommandButton1_Click()
  Dim rgNomePlans As Range, cél As Range
  Dim usuario As String, Senha As String
    
    'Verifica se os campos estão preenchidos
    If txtUsuario = "" Then
        MsgBox "Preencha o campo usuário!", vbCritical, "Atenção"
        txtUsuario.SetFocus: Exit Sub
    ElseIf txtSenha = "" Then
         MsgBox "Preencha o campo senha!", vbCritical, "Atenção"
        txtSenha.SetFocus: Exit Sub
    End If
  
  With Sheets("Senha")
  
     .AutoFilterMode = False
     .Range("$A$1").CurrentRegion.AutoFilter Field:=1, Criteria1:="=" & txtUsuario.Text
     .Range("$A$1").CurrentRegion.AutoFilter Field:=2, Criteria1:="=" & txtSenha.Text
     Set rgNomePlans = .AutoFilter.Range.Columns(3)
  End With
  If rgNomePlans.SpecialCells(xlCellTypeVisible).Cells.Count > 1 Then
    Set rgNomePlans = rgNomePlans.Offset(1, 0).Resize(rgNomePlans.Rows.Count - 1, 1).SpecialCells(xlCellTypeVisible)
    ActiveWorkbook.Unprotect Password:="123"
    
      Unload frmLogin
      For Each cél In rgNomePlans
        Sheets(cél.Value).Visible = True
      Next cél
    ActiveWorkbook.Protect Password:="123", Structure:=True, Windows:=False
  Else
    MsgBox "Usuário e/ou Nome Incorreto!" 'O auto-filtro resultou vazio
  End If
  
      ActiveWorkbook.Protect Password:="123", Structure:=True, Windows:=False
  
End Sub

 

 

 

 

 

Capturar.JPG

Postado

Cloque o codigo que desliga a tela cheita, no evento desative da planilha e o que liga no active.

 

E um if para desativar caso o usuario for o admim

 

if user = "admin" then

 

call desativatelacheita

 

else 

 

call ativatelacheia.

 

end if

 

 

  • Curtir 1
Postado
Em 12/04/2017 às 10:54, CasaDoHardware disse:

Cloque o codigo que desliga a tela cheita, no evento desative da planilha e o que liga no active.

 

E um if para desativar caso o usuario for o admim

 

if user = "admin" then

 

call desativatelacheita

 

else 

 

call ativatelacheia.

 

end if

 

 

Não funcionou, poderia me explicar melhor?

Postado

Faça assim em um modulo

 

Sub telacheia()

 

codigo que coloca a planilha em tela cheia

 

end sub

 

Sub desativatelacheia()

 

codigo para desativar a tela cheia

 

end sub

 

Provavelmente quando você fecha a planilha o codigo que fecha a tela cheia e deixa o excel normal roda, ou deveria

 

Dentro do formulario no codigo do Login insira um teste if

 

Se o usuario for diferente de admin o codigo pra tela cheia executa

 

 

if textboxusuario.value <> "admin" then

 

call telacheia

 

end if

 

 

Não tem muito misterio

 

 

 

 

 

 

 

 

 

 

 

 

  • Curtir 1
Postado
12 horas atrás, CasaDoHardware disse:

Faça assim em um modulo

 

Sub telacheia()

 

codigo que coloca a planilha em tela cheia

 

end sub

 

Sub desativatelacheia()

 

codigo para desativar a tela cheia

 

end sub

 

Provavelmente quando você fecha a planilha o codigo que fecha a tela cheia e deixa o excel normal roda, ou deveria

 

Dentro do formulario no codigo do Login insira um teste if

 

Se o usuario for diferente de admin o codigo pra tela cheia executa

 

 

if textboxusuario.value <> "admin" then

 

call telacheia

 

end if

 

 

Não tem muito misterio

 

 

 

 

 

 

 

 

 

 

 

 

Eu tentei funcionou mas está dando dando erro em tempo de execução "424"

O objeto é obrigatório 

 

Eu fiz da seguinte forma

 

Criei um modulo:

 

Sub refencia()
          If txtUsuario.Value <> "admin" Then
Call lsLigarTelaCheia
Else
Call lsDesligarTelaCheia

End If
End Sub

 

depois atribui esse modulo a Workbook_Open em EstaPasta_de_trabalho

 

A logica funcionou mas da a mensagem de erro 424.

 

________________________________________________

Irei te explicar melhor os códigos. Para me ajudar.

 

Eu tenho uma "Workbook_Open()" em EstaPasta_de_trabalho

 

Que quando eu abro meu trabalho ele sempre irá inciar a tela cheia!

No caso a macro " lsLigarTelaCheia "

 

Dentro do meu formulário de login, existe os seguintes códigos

Private Sub CommandButton1_Click()
  Dim rgNomePlans As Range, cél As Range
  Dim usuario As String, Senha As String
  
    'Verifica se os campos estão preenchidos
    If txtUsuario = "" Then
        MsgBox "Preencha o campo usuário!", vbCritical, "Atenção"
        txtUsuario.SetFocus: Exit Sub
    ElseIf txtSenha = "" Then
         MsgBox "Preencha o campo senha!", vbCritical, "Atenção"
        txtSenha.SetFocus: Exit Sub
    End If
  
  With Sheets("Senha")
  
     .AutoFilterMode = False
     .Range("$A$1").CurrentRegion.AutoFilter Field:=1, Criteria1:="=" & txtUsuario.Text
     .Range("$A$1").CurrentRegion.AutoFilter Field:=2, Criteria1:="=" & txtSenha.Text
     Set rgNomePlans = .AutoFilter.Range.Columns(3)
     
  End With
  If rgNomePlans.SpecialCells(xlCellTypeVisible).Cells.Count > 1 Then
    Set rgNomePlans = rgNomePlans.Offset(1, 0).Resize(rgNomePlans.Rows.Count - 1, 1).SpecialCells(xlCellTypeVisible)
    ActiveWorkbook.Unprotect Password:="159753852"
    
      Unload frmLogin
      For Each cél In rgNomePlans
        Sheets(cél.Value).Visible = True
      Next cél
    ActiveWorkbook.Protect Password:="159753852", Structure:=True, Windows:=False
  Else
    MsgBox "Usuário e/ou Nome Incorreto!" 'O auto-filtro resultou vazio
  End If
  
      ActiveWorkbook.Protect Password:="159753852", Structure:=True, Windows:=False
 
End Sub

Agora repare o seguinte em With Sheets("Senha")

 

 With Sheets("Senha")
  
     .AutoFilterMode = False
     .Range("$A$1").CurrentRegion.AutoFilter Field:=1, Criteria1:="=" & txtUsuario.Text
     .Range("$A$1").CurrentRegion.AutoFilter Field:=2, Criteria1:="=" & txtSenha.Text
     Set rgNomePlans = .AutoFilter.Range.Columns(3)

 

Veja que os usuários e senha estão localizado na planilha "senha" 

Veja que ele vai procurar na planilha "senha" se os usuários digitados nos no txtUsuario e txtSenha condiz com que foi digitado.

 

No caso txtUsuario e  txtSenha são uma TextBox do formulário.

 

Como devemos resolver sabendo?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Postado

Altere esse codigo

 

 

Sub refencia()
          If userform1.txtUsuario.Value <> "admin" Then
Call lsLigarTelaCheia
Else
Call lsDesligarTelaCheia

End If
End Sub

 

Userform1 é o nome do seu formulario de login

  • Curtir 1
Postado
1 hora atrás, CasaDoHardware disse:

Altere esse codigo

 

 

Sub refencia()
          If userform1.txtUsuario.Value <> "admin" Then
Call lsLigarTelaCheia
Else
Call lsDesligarTelaCheia

End If
End Sub

 

Userform1 é o nome do seu formulario de login

Continua dando o erro 424...

Postado
2 horas atrás, Gabriel.Rizzatto disse:

Continua dando o erro 424...

Agora funcionou. 

 

Eu eu retirei da  EstaPasta_de_trabalho

e coloquei dentro do formulário de login 

 

Perfeito agradecido!

adicionado 2 minutos depois

Aproveitando, como poderia fazer com que a planilha fechar sozinha depois de alguns minutos inativos, porém o usuário admin ele não se aplicar a planilha inativa ?

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...