Notifications
Clear all

Vbyesno com erro!!!

15 Posts
3 Usuários
0 Reactions
2,186 Visualizações
(@alinetog)
Posts: 27
Eminent Member
Topic starter
 

Queridos eu de novo :)

Este vb que está abaixo está ok, o problema é que quando o usuário aceita com o "SIM", se torne obrigatório também o outras células além de F54, e quando o usuário inserir o "Não" direciona para salvar ou imprimir, automaticamente.

Alguém pode me ajudar eu?! Por favor!!

PS: Fiz várias pesquisas tentei com if e subif e não consigo! :cry:

If Range("F54") = "" Then
Deseja = "Deseja inserir Dados Comerciais??"
Resposta1 = MsgBox(Deseja, vbQuestion + vbYesNo, "Mensagem!")
If Resposta1 = 6 Then 'Range("F54").Select
Range("F54").Select
'MsgBox "Nome/empresa, este ítem é obrigatório!", vbCritical
MsgBox "Nome/Empresa, favor preencher este campo!", vbCritical

Exit Sub

Else

 
Postado : 22/01/2016 4:05 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Fiquei confuso, uma vez que nao colocou a rotina inteira e sua explicação não ajudou muito, então vou supor que seria isto o que pretende :

Sub teste()

    'Se Range("F54") for igual a vazio
    If Range("F54") = "" Then
        'Executa as instruções abaixo
        'Emite a mensagem
        Deseja = "Deseja inserir Dados Comerciais??"
        Resposta1 = MsgBox(Deseja, vbQuestion + vbYesNo, "Mensagem!")
        
        'Se a resposta for SIM
        'Executa as instruções e sai em Exit Sub
        If Resposta1 = 6 Then 'Range("F54").Select
            Range("F54").Select
            'MsgBox "Nome/empresa, este ítem é obrigatório!", vbCritical
            MsgBox "Nome/Empresa, favor preencher este campo!", vbCritical
        
            Exit Sub
    
        'Se Resposta for NÃO vem para esta linha
        'e sai da rotina
        Else
            MsgBox "Voce escolheu NÃO e Range F54 está Vazio"
            End If
            
    Else
    
        'Se Range("F54") estiver preenchido
        'Não exibe Mensagem e vem direto pra esta linha
        MsgBox "Sua instrução pra o range preenchido"
    End If

End Sub

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

 
Postado : 22/01/2016 5:43 pm
(@alinetog)
Posts: 27
Eminent Member
Topic starter
 

Ah sim, desculpe a má expressão! Tentarei novamente.!

Assim, qdo o usuário aceita preencher os dados comerciais, automaticamente ele aceitou a inserir todos os campos essenciais para melhor instrução, porém se ele deixar de preencher, preciso que lembre o usuário que é necessário o preenchimento de todos os campos, se tornando obrigatório quando resposta em sim.

Mas a rotina não reconhece isso, apenas na célula F54 preciso que na célula f56 e assim por diante aconteça o mesmo, mas não é necessário aparecer o mesmo questionamento se SIM ou Se Não, pois o usuário já aceitou que sim, apenas que notifique dizendo que falta o preenchimento em determinados campos dos Dados comerciais. E com o preenchimentos das células salvar e imprimir como o usuário queira. Entende?!

Segue a rotina, com erro!!

If Range("F54") = "" Then
    Deseja = "Deseja inserir Dados Comerciais??"
    Resposta1 = MsgBox(Deseja, vbQuestion + vbYesNo, "Mensagem!")
        If Resposta1 = 6 Then 'Range("F54").Select
               Range("F54").Select
            'MsgBox "Nome/empresa, este ítem é obrigatório!", vbCritical
             MsgBox "Nome/Empresa, favor preencher este campo!", vbCritical
                 
            Exit Sub
            
                                
            Else
                      
            If Range("F56") = "" Then
   
        If Resposta2 = 6 Then 'Range("F56").Select
               Range("F56").Select
            'MsgBox "CNPJ/empresa, este ítem é obrigatório!", vbCritical
             MsgBox "CNPJ/Empresa, favor preencher este campo!", vbCritical
        
            Exit Sub
            
            
            Else
            
                   
            
            
            
                
     If Range("F18") = "" Then
    'Verificada se curso aberto foi selecionado.
    MsgBox "Favor, escolher seu padrão de Curso!", vbCritical
    Range("F18").Select
    Exit Sub
    
    Else
    
 
If Range("R25") = 0 Then

' Verifica se pessoa fisíca ou juridica

MsgBox " Selecionar se Pessoa Fisíca ou Jurídica!!", vbCritical
Range("F26").Select

Exit Sub

Else


If Range("c94") = "" Then
    'Verificada se termo foi selecionado.
      
    MsgBox "Você concorda com o Termo de Acordo?! Favor Assinalar!!!", vbCritical
    Range("g94").Select
    Exit Sub
    
    

Else

   End If
   End If
   End If
   End If
   End If
   End If
   End If
   
   
   
     
  Criarpdf

ActiveWorkbook.Save

End Sub


    Sub Criarpdf()
    
    Dim Filepdf, rNome, ePath, Filename As String

    rNome = "Ficha de Inscrição - Gestog Certificadora - NR12."
    ePath = "C:Seu_CaminhoMeus_Pdfs"
    
    Filename = Trim(rNome & ".Pdf")
    Filepdf = ePath & Trim("" & Filename)

    Sheets("plan1").Select

    Application.DisplayAlerts = False
       
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Trim(rNome & ".Pdf"), _
            Quality:=xlQualityMinimum, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
            OpenAfterPublish:=True

    MsgBox "PDF gerado com sucesso!"
    
End Sub
 
Postado : 23/01/2016 12:30 pm
(@alinetog)
Posts: 27
Eminent Member
Topic starter
 

Fiquei confuso, uma vez que nao colocou a rotina inteira e sua explicação não ajudou muito, então vou supor que seria isto o que pretende :

Sub teste()

    'Se Range("F54") for igual a vazio
    If Range("F54") = "" Then
        'Executa as instruções abaixo
        'Emite a mensagem
        Deseja = "Deseja inserir Dados Comerciais??"
        Resposta1 = MsgBox(Deseja, vbQuestion + vbYesNo, "Mensagem!")
        
        'Se a resposta for SIM
        'Executa as instruções e sai em Exit Sub
        If Resposta1 = 6 Then 'Range("F54").Select
            Range("F54").Select
            'MsgBox "Nome/empresa, este ítem é obrigatório!", vbCritical
            MsgBox "Nome/Empresa, favor preencher este campo!", vbCritical
        
            Exit Sub
    
        'Se Resposta for NÃO vem para esta linha
        'e sai da rotina
        Else
            MsgBox "Voce escolheu NÃO e Range F54 está Vazio"
            End If
            
    Else
    
        'Se Range("F54") estiver preenchido
        'Não exibe Mensagem e vem direto pra esta linha
        MsgBox "Sua instrução pra o range preenchido"
    End If

End Sub

Mauro, por favor!! Pode me ajudar!? Fiz diversas pesquisa e não encontro solução! Preciso de um curso mega avançado nisso, já vi tantos códigos que me perdi!! E preciso entregar este trabalho, redondo, já que iniciei!

Neste caso, irei mudar a pergunta... se tenho o código abaixo, como faço quando a resposta for em "SIM" , notificar o usuário o preenchimento de outras células além da "F54"?! Por que depois do preenchimento necessário irá salvar automáticamente.

Aguardo seu retorno se for possível! Obrigada desde já!

Abs,

Sub vbyesno1()

Dim resposta1 As Integer
Dim deseja As String

If Range("F54") = "" Then
deseja = "Deseja inserir dados Comercias?"
resposta1 = MsgBox(deseja, vbQuestion + vbYesNo, "Mensagem!")

If resposta1 = 6 Then
Range("F54").Select
MsgBox "Insira o Nome Comercial!", vbCritical, "Mensagem!"

End If
End If

End Sub

 
Postado : 27/01/2016 12:04 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Disponibilize o arquivo com o codigo que fica mais facil

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 27/01/2016 12:17 pm
(@alinetog)
Posts: 27
Eminent Member
Topic starter
 

Disponibilize o arquivo com o codigo que fica mais facil

Ok, segue!! Obrigada MPrudencio!!

 
Postado : 27/01/2016 12:27 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Alinetog,

A sub CRIARPDF não foi alterada.

Usei duas variaveis globais que não perdem o valor após o final da execução do código VBA.

Sou programador amador, talvez essa não seja a solução mais adequada....

Public Resposta As Long
Public JaRespondido As Boolean
    
Public Sub VerificacaoPreImpressao()
    Dim Resposta1 As Long
        
    If Range("F54") = "" Then
        Deseja = "Deseja inserir Dados Comerciais??"
        Resposta1 = MsgBox(Deseja, vbQuestion + vbYesNo, "Mensagem!")
        If Not JaRespondido Then
            JaRespondido = True
            Resposta = Resposta1
        End If
    End If

    If Resposta1 = vbYes Or (JaRespondido And Resposta = vbYes) Then
        If Range("F54") = "" Then
            Range("F54").Select
            MsgBox "Nome/Empresa, favor preencher este campo!", vbCritical
            Exit Sub
        End If
    
        If Range("F56") = "" Then
            Range("F56").Select
            MsgBox "CNPJ/Empresa, favor preencher este campo!", vbCritical
            Exit Sub
        End If
    
        If Range("F18") = "" Then
            'Verificada se curso aberto foi selecionado.
            MsgBox "Favor, escolher seu padrão de Curso!", vbCritical
            Range("F18").Select
            Exit Sub
        End If

        If Range("R25") = 0 Then
            ' Verifica se pessoa fisíca ou juridica
            MsgBox " Selecionar se Pessoa Fisíca ou Jurídica!!", vbCritical
            Range("F26").Select
            Exit Sub
        End If

        If Range("C94") = "" Then
            'Verificada se termo foi selecionado.
             
            MsgBox "Você concorda com o Termo de Acordo?! Favor Assinalar!!!", vbCritical
            Range("G94").Select
            Exit Sub
        End If
    End If
 
    Criarpdf

    ActiveWorkbook.Save

    JaRespondido = False
End Sub

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

 
Postado : 27/01/2016 12:33 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Testa essa rotina.


Sub Confirma()

Dim Resposta As String
'Dim Resposta As Integer
Dim W As Worksheet

Set W = Sheets("Plan1")

If W.Range("F54") Or W.Range("F56") _
Or W.Range("F58") Or W.Range("P58") _
Or W.Range("F60") Or W.Range("R60") _
Or W.Range("R62") Or W.Range("F65") _
Or W.Range("N65") Or W.Range("U65") _
Or W.Range("F68") Or W.Range("H68") _
Or W.Range("F70") Or W.Range("F72") = "" Then

Resposta = MsgBox("Dados Comerciais São Obrigatorios.", vbYesNo, "Atenção")

    If Resposta = vbNo Then
    MsgBox "Preencha Todos os Dados Comerciais", vbInformation, "Atenção"
    Else
    'Coloque aqui a Rotina que desejar
    End If
    End If
End Sub

Ajuste o codigo como desejar

Ou informe que rotina deve ir no lugar de coloque aqui a rotina que desejar

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 27/01/2016 1:34 pm
(@alinetog)
Posts: 27
Eminent Member
Topic starter
 

Alexandre_eng Mto Obrigada! Mas não funcionou, não ! Fiz vários teste tbm seguindo o que me disse de poder ser no criarpdf. Mas não consegui adaptar!!

 
Postado : 27/01/2016 2:12 pm
(@alinetog)
Posts: 27
Eminent Member
Topic starter
 

Oi MPrudencio, Ficou mto legal a organização do ="" adorei, mas uma que aprendi por aqui!! Obrigada!!

Mas viu, esses campos não são obrigatórios, eles só são quando o usuário opta por SIM, para não haver falta das informações já que ele decidiu por inserir seus dados Comerciais! Entende?!

 
Postado : 27/01/2016 2:16 pm
(@alinetog)
Posts: 27
Eminent Member
Topic starter
 

Testa essa rotina.


Sub Confirma()

Dim Resposta As String
'Dim Resposta As Integer
Dim W As Worksheet

Set W = Sheets("Plan1")

If W.Range("F54") Or W.Range("F56") _
Or W.Range("F58") Or W.Range("P58") _
Or W.Range("F60") Or W.Range("R60") _
Or W.Range("R62") Or W.Range("F65") _
Or W.Range("N65") Or W.Range("U65") _
Or W.Range("F68") Or W.Range("H68") _
Or W.Range("F70") Or W.Range("F72") = "" Then

Resposta = MsgBox("Dados Comerciais São Obrigatorios.", vbYesNo, "Atenção")

    If Resposta = vbNo Then
    MsgBox "Preencha Todos os Dados Comerciais", vbInformation, "Atenção"
    Else
    'Coloque aqui a Rotina que desejar
    End If
    End If
End Sub

Ajuste o codigo como desejar

Ou informe que rotina deve ir no lugar de coloque aqui a rotina que desejar

Oi MPrudencio, Ficou mto legal a organização do ="" adorei, mas uma que aprendi por aqui!! Obrigada!!

Mas viu, esses campos não são obrigatórios, eles só são quando o usuário opta por SIM, para não haver falta das informações já que ele decidiu por inserir seus dados Comerciais! Entende?!

Ah ... e qdo optar por Não ai sim ir para salvamento..

 
Postado : 27/01/2016 2:17 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Alinetog,

Mudei muita coisa no código que havia te enviado devido a quantidade de campos a serem verificados.

TInha um erro na hora de salvar o PDF.

Código testado. Pequenos ajustes para adequar às suas necessidades.

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

 
Postado : 27/01/2016 2:55 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Entao ve se isso

Se a planilha tivesse sem senha dava pra arrumar essa formatação do PDF que ta estranha

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 27/01/2016 3:14 pm
(@alinetog)
Posts: 27
Eminent Member
Topic starter
 

Alexandre_eng, tu é genial, jamais iria saber fazer o q tu fez, muitíssimo obrigada!!! É exatamente isso que precisava!! Obrigada Querido!!

:D

 
Postado : 28/01/2016 7:09 am
(@alinetog)
Posts: 27
Eminent Member
Topic starter
 

MPrudencio ficou ótima muitíssimo obrigada, tbm não saberia fazer isso! Só que imaginei para cada célula uma notificação, que o Alexandre_eng conseguiu elaborar, ficou genial, dá uma olhada, não que precise né, pq tu é genial tbm...mas pra ver como ficou! Mto bacana!

Obrigada querido!

Q Deus ilumine ainda mais vcs em sabedoria!!

Abs,

 
Postado : 28/01/2016 7:14 am