Não Avançar se Comb...
 
Notifications
Clear all

Não Avançar se Combobox Estiver Vazio

4 Posts
2 Usuários
0 Reactions
1,622 Visualizações
(@eliezer7)
Posts: 15
Active Member
Topic starter
 

Utilizo o seguinte código para não deixar o campo em branco e não permitir que seja escrito um valor que não esteja na RowSource, o problema é que se eu utilizar o Exit como está no código e esse campo estiver vazio quando for fechar o formulário ele executa a Magbox "Selecione um banco da LIsta" antes de fechar o formulário.
Mudei o Exit para AfterUpdate ou BeforeUpdate, a mensagem não aparece, o problema é que nesses casos ele permite eu deixar o campo em branco se eu passar direto por ele com ENTER ou TAB.

Private Sub cbox_Banco_Exit(ByVal cancel As MSForms.ReturnBoolean)
'Grava posicao do dado preenchido na lista de dados
posicao = cbox_Banco.ListIndex
'Verifica se é uma entrada valida
If posicao = -1 Or cbox_Banco.Text = "" Then
MsgBox "Selecione um banco da lista", vbCritical
'seleciona o texto do combobox
cbox_Banco.SelStart = 0
cbox_Banco.SelLength = Len(cbox_Banco.Text)
cancel = True
End If
End Sub

 
Postado : 26/10/2014 9:18 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Por curiosidade, essa opção, de não permitir prosseguir caso o controle estiver vazio, não pode ser posta no último controle?

Ex: Imagine que você tem um botão salvar, dentro dele terá um comando para evitar prosseguir caso a combo esteja vazia.

Att

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

 
Postado : 27/10/2014 6:19 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Eliézer, trabalhar com estes eventos é um pouco complicado as vezes, como não conheço todo o processo sugiro fazer os seguintes ajustes :

1º ) No formulário, adicione um Controle FRAME;
2º ) Mova todos os Controles para dentro deste Frame, menos o Botão SAIR ou o que utiliza para fechar o Formulário;
3º ) Crie esta Variável no escopo do formulário:
Dim sCancel As Boolean

4º )No botão que utiliza para fechar ou Sair do Formulário utilize a seguinte rotina:
Isto é um exemplo, ajuste conforme seu modelo

Private Sub SeuBotaoSair_Click()
    sCancel = True
    Unload Me
End Sub

A rotina que postou deverá ficar da seguinte forma:

Private Sub cbox_Banco_Exit(ByVal cancel As MSForms.ReturnBoolean)
    
    If sCancel = True Then
        Exit Sub

        'Grava posicao do dado preenchido na lista de dados
        posicao = cbox_Banco.ListIndex
        
        'Verifica se é uma entrada valida
        If posicao = -1 Or cbox_Banco.Text = "" Then
            MsgBox "Selecione um banco da lista", vbCritical
            'seleciona o texto do combobox
            cbox_Banco.SelStart = 0
            cbox_Banco.SelLength = Len(cbox_Banco.Text)
            cancel = True
        End If
    
    End If
End Sub

Faça os testes e veja se ocorre como deseja, lembrando que minha sugestão é baseada em suposição por não conhecer todo o processo, e qualquer duvida retorne.

[]s

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

 
Postado : 27/10/2014 7:00 am
(@eliezer7)
Posts: 15
Active Member
Topic starter
 

Perfeito Mauro.
Resolvido!
Obrigado.

 
Postado : 29/10/2014 12:29 pm