COMANDO SETFOCUS NAO FUNCIONA

NSTOLBERG 30/05/2012 18:26:57
#403173
Galera, boa noite..

Me ajudem, por favor...

Tenho um Userform com varios campos.... em um dele um Combo é preenchido e logo e seguida um Text. Após o preenchimento do Text, a rotina abiaxo é executada e o cursor deveria voltar ao Combo. Porem isso não está acontecendo. Já tentei varias coisa...mas o cursor teima em ir para o campo seguinte. Já tentei, Cancel = true, Cancel = False, criar um outro Text invisivel para que quando o foco fosse para ele ele retorna-se o foco para o Combo que quero...mas nada resolve. Já vasculhei a NET atraz de uma solução...mas tudo parece não funcionar.

Se alguem souber como resolver isso ou outro comando para usar agradeço.

Segue o código:

Private Sub REFUGO_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Dim db As Database
Dim rs As Recordset

On Error GoTo FalhaConexao
Set db = OpenDatabase(ThisWorkbook.Path & [Ô]\Banco Dados.xls[Ô], False, False, [Ô]Excel 8.0[Ô])
Set rs = db.OpenRecordset([Ô]Select * from [BANCO$][Ô])

[ô]Procura a OP no banco de dados e salva os dados
Do
On Error Resume Next
If rs([Ô]OP[Ô]).Value = CDbl(Principal.OP.Value) Then
rs.Edit
rs([Ô]REFUGO[Ô]).Value = rs([Ô]REFUGO[Ô]).Value & Me.REFUGO.Value & [Ô];[Ô]
rs([Ô]CODIGOREF[Ô]).Value = rs([Ô]CODIGOREF[Ô]).Value & Me.CODREFUGO.Value & [Ô];[Ô]
rs.Update
rs.MoveNext
End If
rs.MoveNext
Loop Until rs.EOF

[ô]Fechar banco de dados
db.Close

Me.REFUGO.Value = [Ô][Ô]
[txt-color=#e80000]Me.CODREFUGO.SetFocus[/txt-color]
Me.CODREFUGO.Value = [Ô][Ô]

Exit Sub

FalhaConexao:
MsgBox [Ô]Não foi possível conectar-se com o Banco de Dados. O Banco de Dados não existe não está no caminho informado.[Ô], vbInformation
Exit Sub

End Sub

Pelas ajudas...obrigado.
Sds,
Nei.
FILMAN 30/05/2012 18:53:18
#403175
Você já reparou se o CODREFUGO esta Enabled = False, pois se estiver ele não vai receber o Foco

Outra dica é Limpar antes de Setar

Me.REFUGO.Value = [Ô][Ô]
Me.CODREFUGO.Value = [Ô][Ô]
Me.COdREFUGO.SetFocus

Verifique tambem a ordenação do TabIndex de cada componente, procure manter sempre em order


REFUGO é o seu TextBox? Se for coloque essa rotina no LostFocus do mesmo


Se não resolveu poste ai que estamos aqui pra ajudar!
CASTELO 30/05/2012 19:30:30
#403176
Resposta escolhida
Desculpa a pergunta.

Mas esta usando uma ComboBox do VB6 ?

Se sim:
1º para LIMPAR (apagar) a lista dela você usa combo.clear ou apenas para limpar o texto que define o item anteriormente selecionado combo.text = [Ô][Ô]
2º usando o comando combo.setfocus no evento LOSTFOCUS do textbox ele pula direto para a combo ignorando a sequencia do tabindex

NSTOLBERG 30/05/2012 20:57:02
#403179
FILMAN,

O Combo CODREFUGO esta como Enabled = True. Coloquei na ordem que vc sugeriu e os TabIndex dos componentes estão certos, ou seja, na sequencia, mas não funcionou. Sim, REFUGO é o meu Text e é nele que está a rotina que mencionei, ou seja, ser preenchido e dar o ENTER a rotina roda.
O Text não tem a propriedade LOSTFOCUS, creio que seja porque estou usando o VBA do Excel e está propriedade não exista lá para os TextBox.

CASTELO

Estou usando o VBA do Excel..

Ainda estou com o problema. Mais alguma sugestão?

Obrigado,

FILMAN 30/05/2012 21:32:52
#403181
Tenta Fazer o seguinte ao invés de colocar no BeforeUpdate do TextBox coloque no KeyDown

Ficaria assim
Private Sub REFUGO_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = VbKeyReturn Then
Dim db As Database
Dim rs As Recordset

On Error GoTo FalhaConexao
Set db = OpenDatabase(ThisWorkbook.Path & [Ô]\Banco Dados.xls[Ô], False, False, [Ô]Excel 8.0[Ô])
Set rs = db.OpenRecordset([Ô]Select * from [BANCO$][Ô])

[ô]Procura a OP no banco de dados e salva os dados
Do
On Error Resume Next
If rs([Ô]OP[Ô]).Value = CDbl(Principal.OP.Value) Then
rs.Edit
rs([Ô]REFUGO[Ô]).Value = rs([Ô]REFUGO[Ô]).Value & Me.REFUGO.Value & [Ô];[Ô]
rs([Ô]CODIGOREF[Ô]).Value = rs([Ô]CODIGOREF[Ô]).Value & Me.CODREFUGO.Value & [Ô];[Ô]
rs.Update
rs.MoveNext
End If
rs.MoveNext
Loop Until rs.EOF

[ô]Fechar banco de dados
db.Close

Me.REFUGO.Value = [Ô][Ô]
Me.CODREFUGO.Value = [Ô][Ô]
Me.CODREFUGO.Enabled = True
Me.CODREFUGO.SetFocus

Exit Sub

End If
FalhaConexao:
MsgBox [Ô]Não foi possível conectar-se com o Banco de Dados. O Banco de Dados não existe não está no caminho informado.[Ô], vbInformation
Exit Sub

End Sub


Caso ainda não de certo tire o Tratamento de erro de execute e verifique onde esta acusando o erro se é somente no SetFocus
NSTOLBERG 30/05/2012 22:16:58
#403185
FILMAN..

Não deu certo. quando eu entro com o valor, digamos 20, ele nem deixa eu digitar o [Ô]0[Ô] ele já sai executando o código. o If KeyCode = VbKeyReturn Then dá como falso e ele nem executa o resto do código.

estou na mesma....
Obrigado.
ROBSON220BASS 30/05/2012 23:01:38
#403188
tenta mandar o foco para outro controle, para verificar.
CASTELO 30/05/2012 23:12:31
#403189
Já mexi no VBA no excel a alguns tempos,
bom fiz um teste aqui (VBA EXCEL 2007)
1 form
2 text
1 combo

[ô]ao sair do combo obrigatoriamente esta indo para o textbox1
Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Me.TextBox1.SetFocus
End Sub

FIz um teste diferente aqui agora e gera erro...
[ô] ao entrar no textbox2 ele retorna o foco ao combobox1 e depois limpa o value, aqui funcionou.
Private Sub TextBox2_Enter()
Me.ComboBox1.SetFocus
Me.ComboBox1.Value = [Ô][Ô]
End Sub

Desconcidera esse TextBox2_Enter()
NILSONTRES 30/05/2012 23:57:25
#403190
Amigo, é simples, coloca um DoEvents, ali onde mostro abaixo.

Me.CODREFUGO.Enabled = True
DoEvents
Me.CODREFUGO.SetFocus
NSTOLBERG 31/05/2012 08:45:41
#403204
CASTELO

Quando vc diz que funcionou ai, isso me deixa mais intrigado. Eu não programei nada e nem existe nada em minha rotina que faça o VBA ignorar o comando SetFocus. Muito estranho...

NILSONTRES

Usei o comando DoEvents e não funcionou também.
o foco insiste em ir para o combo seguinte ao invês de voltar ao combo anterior.....
Não sei se é um problema crônico do VBA....talves no VB6 ou .NET funcione diferente.....

Valeu pela ajuda..
Fico no aguardo de um nova sugestão...

Obrigado galera..
CASTELO 31/05/2012 09:10:17
#403209
é complicado para tí disponibilizar apenas este form em arquivo separado ? se puder colocar ele online.
Página 1 de 2 [15 registro(s)]
Tópico encerrado , respostas não são mais permitidas