Campo Obrigatório - Não deixar Salvar e Nem Imprimir  [Resolvido]

Visual Basic for Aplication e macros no Excel.
Regras do fórum
Sua dúvida foi respondida? Marque como RESOLVIDO em seus tópicos, usando o botão com marca verde. Imagem

Campo Obrigatório - Não deixar Salvar e Nem Imprimir

Mensagempor Admaury » Ter Out 08, 2019 7:08 pm

Boa Tarde Colegas;

Tenho uma planilha com formato de formulário, estou com grande problema entre os usuários da mesma, pois não estão preenchendo corretamente ( deixa dados em branco) e estão imprimindo e salvando.

Preciso de duas modificação;

- 1ª se não preencher as células ( C8, J8, N8, R8, C11, K11,....) trava para não deixar imprimir e nem salvar;

- 2ª caso informe a opção na opção TIPO "K11" ( transferência ou deposito ) obriga a preencher a celulas ( D7, D48,D49 E D50) e segue a mesma regra da primeira solicitação.

Se puder me der um caminho fico agradecido;

Obrigado por enquanto.

Link do Modelo:
https://1drv.ms/x/s!AtzGlCHJsviZgR1A5QK ... o?e=ziVoF6
Admaury
Membro
Membro
 
Mensagens: 45
Registrado em: Seg Dez 30, 2013 9:23 am
Has thanked: 8 times
Have thanks: 0 time

{ SO_SELECT }

Re: Campo Obrigatório - Não deixar Salvar e Nem Imprimir

Mensagempor Coutinho » Qua Out 09, 2019 10:37 am

Admaury, não tenho como ver seu modelo no momento, então vou colocar uma rotina que eu usei a um tempo atraz que verifica se as celulas estão preenchidas, observe que para ficar mais limpo e fácil de identificar as celulas eu Nomeei as mesmas, essa rotina tem varias verificaçõess de celulas, mas reduzi só para exemplificar, veja se consegue adaptar a sua questão, só não esqueça que se nomear suas celulas alterar na rotina.
Código: Selecionar todos
Sub VerificaCampos()
    Dim sConfirma   As Integer
    Dim strVazia
    Dim msg, MsgI
   
    msg = "Preenchimento Obrigatório"   ' Define a mensagem
    MsgI = "Preenchimento Opcional"   ' Define a mensagem
   
    If Range("sCelData").Value = "" Then 'Range DATA
            strVazia = "Data"
            MsgBox "Campo " & (strVazia & " em Branco"), vbCritical, msg
            Range("sCelData").Activate
            Exit Sub
       
        ElseIf Range("sCelDoc").Value = "" Then 'Range Documento
                    strVazia = "Documento"
                    MsgBox "Campo " & (strVazia & " em Branco"), vbCritical, msg
                    Range("sCelDoc").Activate
                Exit Sub
                               
        ElseIf Range("sCelEndereco").Value = "" Then 'Range Endereço
                    strVazia = "Endereco"
                    MsgBox "Campo " & (strVazia & " em Branco"), vbCritical, msg
                    Range("sCelEndereco").Activate
                Exit Sub
       
        ElseIf Range("sCelObs").Value = "" Then 'Range OBS com exigindo confirmação
                    strVazia = "Observação"
                    sConfirma = MsgBox("Campo " & (strVazia & " em Branco") _
                    & vbCrLf & vbCrLf & "Deseja Continuar ?", vbYesNo + vbInformation, MsgI)
     
            If sConfirma = vbNo Then
                    Range("sCelObs").Activate
                Exit Sub
   
            End If
        'Após verificações continua o Cadastro chamando a rotina
        'Call LançarNovo
    Else
        'Call LançarNovo
    End If

End Sub


Essa rotina impede de Salvar após a verificação, você tem de colar no Evento do modulo da pasta "Private Sub Workbook_BeforeSave" e não da planilha.
É só um exemplo de verificação de algumas celulas antes de SALVAR, tem de ser ajustada ao que precisa.
Código: Selecionar todos
Private Sub Workbook_BeforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean)
    'Impede Salvar Como
    Cancel = True

    'Verifica se as células A1, B1 e C1 estão vazias
    If IsEmpty(Range("Plan1!A1")) Or IsEmpty(Range("Plan1!B1")) Or IsEmpty(Range("Plan1!C1")) Then
        Mensagem = MsgBox("Celulas A1, B1 ou C1 estão vazias.", vbExclamation, "Documento não será salvo")
    Exit Sub
   
    End If

End Sub


Essa rotina impede de IMPRIMIR após a verificação, você tem de colar no Evento do modulo da pasta "Private Sub Workbook_BeforePrint" e não da planilha.
É só um exemplo de verificação de algumas celulas antes de IMPRIMIR tem de ser ajustada ao que precisa.
Código: Selecionar todos
Private Sub Workbook_BeforePrint(Cancel As Boolean)
'Impede Imprimir
Cancel = True

'Verifica se as células A1, B1 e C1 estão vazias
    If IsEmpty(Range("Plan1!A1")) Or IsEmpty(Range("Plan1!B1")) Or IsEmpty(Range("Plan1!C1")) Then
        Mensagem = MsgBox("Células A1, B1 ou C1 estão vazias.", vbExclamation, "Documento não será Impresso")
        Exit Sub
   
    End If

End Sub


Espero que ajude.

[]s
Mauro Coutinho
Mauro Coutinho
com novo usuário devido a manutenção do grupo

For this post the author Coutinho thanked: 2
Admaury (Qua Out 09, 2019 6:19 pm) • JSCOPA10 (Qua Out 09, 2019 5:18 pm)
Coutinho
Ninja do Excel
Ninja do Excel
 
Mensagens: 116
Registrado em: Qua Jun 12, 2019 6:18 pm
Has thanked: 5 times
Have thanks: 61 times

Re: Campo Obrigatório - Não deixar Salvar e Nem Imprimir

Mensagempor JSCOPA10 » Qua Out 09, 2019 10:55 am

.
Admaury, se a solução do Coutinho não resolver, poste o arquivo no www.sendspace.com ... depois cola o link aqui !! ... (esse site q vc postou - e outros - são meio chatinhos de usar)!!
.

For this post the author JSCOPA10 thanked:
Admaury (Qua Out 09, 2019 6:19 pm)
Avatar do usuário
JSCOPA10
Ninja do Excel
Ninja do Excel
 
Mensagens: 203
Registrado em: Qua Jun 19, 2019 9:11 pm
Has thanked: 20 times
Have thanks: 65 times

Re: Campo Obrigatório - Não deixar Salvar e Nem Imprimir

Mensagempor Admaury » Qua Out 09, 2019 11:18 am

Segue o Link para baixar:
https://www.sendspace.com/file/szc118
Admaury
Membro
Membro
 
Mensagens: 45
Registrado em: Seg Dez 30, 2013 9:23 am
Has thanked: 8 times
Have thanks: 0 time

Re: Campo Obrigatório - Não deixar Salvar e Nem Imprimir

Mensagempor Admaury » Qua Out 09, 2019 11:25 am

Bom dia Coutinho;

- tentei executar e não evolui no trabalho, eu tenho pouco conhecimento em VBA, ate li alguns artigos, e mesmo assim deu varios erros e não realizou a operação.

- Se conseguir me detalhar melhor eu ficaria agradecido, e vai desculpando a minha falta de conhecimento.

Obrigado
Admaury
Membro
Membro
 
Mensagens: 45
Registrado em: Seg Dez 30, 2013 9:23 am
Has thanked: 8 times
Have thanks: 0 time

Re: Campo Obrigatório - Não deixar Salvar e Nem Imprimir

Mensagempor rlm » Qua Out 09, 2019 11:30 am

Creio AdMaury voce está no caminho certo em suas rotinas porem "aplicando-as" em local errado.
Rotinas tipo "Workbook_BeforeSave" e/ou "Workbook_BeforeClose" não são interpretadas se inseridas em um modulo "geral' como voce colocou em seu projeto;
essas rotinas deve ser inseridas no modulo de workbook "Esta_Pasta_de_Trabalho"
Mova as rotinas para esse modulo e experimente.
Reinaldo
Garça - SP / SCS - SP
Avatar do usuário
rlm
Ninja do Excel
Ninja do Excel
 
Mensagens: 410
Registrado em: Qui Out 16, 2014 12:30 pm
Has thanked: 30 times
Have thanks: 185 times

Re: Campo Obrigatório - Não deixar Salvar e Nem Imprimir  [Resolvido]

Mensagempor JSCOPA10 » Qua Out 09, 2019 12:17 pm

.
Me metendo na resposta dos outros (kk) ... mas é que me interessei pelo assunto!!
.
rlm, testei aqui e funcionou parcialmente !!! ... Coloquei o primeiro código na Pasta de Trabalho e mostrou a msg: falta preencher A1, B1 e C1 ... até aqui ok!! .... Mas depois de preencher e tentar salvar não acontece nada, ou seja, não abre a janela para eu salvar!!!
.
Ops!! Editando ... é que faltou o "Cancel = False" no final ....... Agora ficou show!!!
.
Código: Selecionar todos
Private Sub Workbook_BeforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean)
    'Impede Salvar Como
    Cancel = True

    'Verifica se as células A1, B1 e C1 estão vazias
    If IsEmpty(Range("Plan1!A1")) Or IsEmpty(Range("Plan1!B1")) Or IsEmpty(Range("Plan1!C1")) Then
        Mensagem = MsgBox("Celulas A1, B1 ou C1 estão vazias.", vbExclamation, "Documento não será salvo")
    Exit Sub
   
    End If
Cancel = False
End Sub

For this post the author JSCOPA10 thanked:
Admaury (Qua Out 09, 2019 6:19 pm)
Avatar do usuário
JSCOPA10
Ninja do Excel
Ninja do Excel
 
Mensagens: 203
Registrado em: Qua Jun 19, 2019 9:11 pm
Has thanked: 20 times
Have thanks: 65 times

Re: Campo Obrigatório - Não deixar Salvar e Nem Imprimir

Mensagempor Admaury » Qua Out 09, 2019 6:18 pm

Agora deu certo! muito obrigado meu amigos
Admaury
Membro
Membro
 
Mensagens: 45
Registrado em: Seg Dez 30, 2013 9:23 am
Has thanked: 8 times
Have thanks: 0 time


Voltar para VBA & Macros

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 7 visitantes