Notifications
Clear all

Macro para invalidar outra macro

2 Posts
2 Usuários
0 Reactions
1,026 Visualizações
(@jrodrig7)
Posts: 50
Trusted Member
Topic starter
 

Pessoal, boa tarde. Tudo bem?

Estou usando a macro abaixo que impede de salvar se alguns campos não estiverem preenchidos, mas preciso que ela não seja válida se a pessoa for uma administradora da planilha. (A planilha será usada com administradores e com outras pessoas que apenas deverão preencher outros campos). Se a pessoa digitar uma senha ao abrir o arquivo, essa macro se desabilita. Ou algo parecido, mas algo que permita que a pessoa consiga editar e salvar sem ter que preencher todos os campos. Alguém pode me ajudar?
Esses dois grupos de pessoas precisam ter como editar a planilha, deve haver diferenciação apenas na autorização de cada um para salvar.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
With Sheets("Pre-qualificação")
If .[Q5] <> 11 Then
MsgBox "Preencha os campos de 'Dados da empresa contratada'"
Sheets("Pre-qualificação").Activate
Cancel = True
Range("E3").Select
End If
If .[Q5] = 1 And .[Q16] <> 17 Then
MsgBox "Preencha os campos de 'Referência da empresa'"
Sheets("Pre-qualificação").Activate
Cancel = True
Range("F16").Select
End If
If .[Q5] = 0 And .[R16] <> 14 Then
MsgBox "Preencha os campos de 'Referência da empresa'"
Sheets("Pre-qualificação").Activate
Cancel = True
Range("F16").Select
End If
If .[S30] <> 6 Then
MsgBox "Preencha o Item '1. Geral'"
Sheets("Pre-qualificação").Activate
Cancel = True
Range("N28").Select
End If
If .[Q12] = 0 Or .[N35] = "" Or .[N36] = "" Or .[N37] = "" Then
MsgBox "Preencha o Item '2. Política e Gerenciamento de segurança saúde e meio ambiente'"
Sheets("Pre-qualificação").Activate
Cancel = True
Range("N35").Select
End If
If .[Q12] = 0 And .[N39] = "" Then
MsgBox "Preencha o Item '3. Práticas e procedimentos seguros para o trabalho*'"
Sheets("Pre-qualificação").Activate
Cancel = True
Range("N39").Select
End If
If .[Q12] = 0 And .[N41] = "" Then
MsgBox "Preencha o Item '4. Treinamento de segurança saúde e meio ambiente'"
Sheets("Pre-qualificação").Activate
Cancel = True
Range("N41").Select
End If
If .[Q5] = 0 And .[S46] <> 6 Then
MsgBox "Preencha o Item '5. Atendimento a requisitos legais'"
Sheets("Pre-qualificação").Activate
Cancel = True
Range("N43").Select
End If
If .[Q5] = 1 And .[T46] <> 4 Then
MsgBox "Preencha o Item '5. Atendimento a requisitos legais'"
Sheets("Pre-qualificação").Activate
Cancel = True
Range("N43").Select
End If
End With
End Sub

 
Postado : 07/10/2015 11:44 am
(@lipetom)
Posts: 24
Eminent Member
 

Eu não testei mais isso deve dar:
A senha é 12345 pode alterar na primeira linha do codigo
a mensagem inicial voce altera na penultima linha

Const SenhaAdm As string = "12345"
Dim VerificarLogin As string 
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If VerificarLogin <> SenhaAdm Then
        With Sheets("Pre-qualificação")
            If .[Q5] <> 11 Then
                MsgBox "Preencha os campos de 'Dados da empresa contratada'"
                Sheets("Pre-qualificação").Activate
                Cancel = True
                Range("E3").Select
            End If
            If .[Q5] = 1 And .[Q16] <> 17 Then
                MsgBox "Preencha os campos de 'Referência da empresa'"
                Sheets("Pre-qualificação").Activate
                Cancel = True
                Range("F16").Select
            End If
            If .[Q5] = 0 And .[R16] <> 14 Then
                MsgBox "Preencha os campos de 'Referência da empresa'"
                Sheets("Pre-qualificação").Activate
                Cancel = True
                Range("F16").Select
            End If
            If .[S30] <> 6 Then
                MsgBox "Preencha o Item '1. Geral'"
                Sheets("Pre-qualificação").Activate
                Cancel = True
                Range("N28").Select
            End If
            If .[Q12] = 0 Or .[N35] = "" Or .[N36] = "" Or .[N37] = "" Then
                MsgBox "Preencha o Item '2. Política e Gerenciamento de segurança saúde e meio ambiente'"
                Sheets("Pre-qualificação").Activate
                Cancel = True
                Range("N35").Select
            End If
            If .[Q12] = 0 And .[N39] = "" Then
                MsgBox "Preencha o Item '3. Práticas e procedimentos seguros para o trabalho*'"
                Sheets("Pre-qualificação").Activate
                Cancel = True
                Range("N39").Select
            End If
            If .[Q12] = 0 And .[N41] = "" Then
                MsgBox "Preencha o Item '4. Treinamento de segurança saúde e meio ambiente'"
                Sheets("Pre-qualificação").Activate
                Cancel = True
                Range("N41").Select
            End If
            If .[Q5] = 0 And .[S46] <> 6 Then
                MsgBox "Preencha o Item '5. Atendimento a requisitos legais'"
                Sheets("Pre-qualificação").Activate
                Cancel = True
                Range("N43").Select
            End If
            If .[Q5] = 1 And .[T46] <> 4 Then
                MsgBox "Preencha o Item '5. Atendimento a requisitos legais'"
                Sheets("Pre-qualificação").Activate
                Cancel = True
                Range("N43").Select
            End If
        End With
    End If
End Sub

Private Sub Workbook_Open()
VerificarLogin = InputBox("Digite a senha de Administrador", "")
End Sub
 
Postado : 07/10/2015 5:28 pm