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
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