Notifications
Clear all

Decisão MsgBox

4 Posts
3 Usuários
0 Reactions
1,219 Visualizações
(@berti)
Posts: 0
New Member
Topic starter
 

Sei que tem vários tópicos, já procurei na pesquisa e não encontrei semelhante.

Seguinte.

Apenas a tomada de decisão da MsgBox conforme o código abaixo, vejam aonde estou fazendo besteira por favor:

Dim texto2 As String
Dim mensagem

On Error GoTo Erro

pesquisa3 = Application.WorksheetFunction.VLookup(boleta, intervalo2, 5, 0)

txt_qtdcbu = pesquisa3

Erro:
texto2 = "CBU NÃO CADASTRADA! PROSSEGUIR?"
mensagem2 = MsgBox(texto2, vbYesNo + vbCritical)

If mensagem2 = vbNo Then
txt_cbu.SetFocus    
txt_cbu.SelStart = 0
txt_cbu.SelLength = Len(txt_cod.Text)
    
ElseIf mensagem2 = vbYes Then
    txt_qtdedit.SetFocus

End If

Quero que se clicado em Não ele retorne ao textbox anterior onde o mesmo fica selecionado para inserção de novo dado. Mas tanto clicando como em Não ou Sim ele já avança para o textbox seguinte.

 
Postado : 27/02/2015 7:55 am
(@gtsalikis)
Posts: 2373
Noble Member
 

Olhei algumas vezes, e não achei nada anormal.

Como vc não postou o código inteiro: Não tem nenhum outro fator interferindo? Essa situação é disparada como? Vc chama o código com um botão? Ou é com eventos? Se vc disparou um evento, ele também pode estar interferindo.

O ideal seria percorrer o código com F8, para ver o que acontece. Vc sabe usar esse recurso? selecione a linha:
mensagem2 = MsgBox(texto2, vbYesNo + vbCritical)

E de um F9 para criar um ponto de interrupção.

O código vai parar ali. Depois, retome ele linha a linha com F8 e veja o que vai acontecendo.

 
Postado : 27/02/2015 8:05 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!!

Eu não entendi, mas ao comentar essa linha abaixo, o setFocus está sendo posicionado corretamente.

txt_cbu.SelLength = Len(txt_cod.Text)

att

 
Postado : 27/02/2015 8:06 am
(@berti)
Posts: 0
New Member
Topic starter
 

Então...desculpem, naquele evento não irei mais precisar da MsgBox, pois não ocorrerá este tipo de erro, mas no evento abaixo vou precisar sim:

Private Sub txt_cod_AfterUpdate()

Dim intervalo As Range
Dim texto As String
Dim codigo As Long
Dim pesquisa1
Dim pesquisa2
Dim mensagem

codigo = txt_cod
Sheets("Cadastro Separação_FEDEX").Select
Set intervalo = Range("A2:C1000")

On Error GoTo Erro

pesquisa1 = Application.WorksheetFunction.VLookup(codigo, intervalo, 2, 0)
pesquisa2 = Application.WorksheetFunction.VLookup(codigo, intervalo, 3, 0)

txt_separador = pesquisa1
txt_empresa = pesquisa2

Exit Sub

Erro:
texto = "SEPARADOR NÃO CADASTRADO"
mensagem = MsgBox(texto, vbOKOnly + vbInformation)

If mensagem = vbOK Then
txt_cod.SetFocus
txt_cod.SelStart = 0
    txt_cod.SelLength = Len(txt_cod.Text)
End If

End Sub

Pode ser que seja por causa do evento novamente, mas como após confirmar a MsgBox estou direcionando para que volte ao txt_cod sem limpar o campo, somente deixar selecionado para a inserir novo dado.

 
Postado : 27/02/2015 8:39 am