manter o foco na me...
 
Notifications
Clear all

manter o foco na mesma textbox ao atualizar

5 Posts
2 Usuários
0 Reactions
1,494 Visualizações
(@franca)
Posts: 21
Eminent Member
Topic starter
 

boa noite a todos tenho um form com 2 textbox: txtcod e txtqtde. no evento afterupdate a txtcod ela faz uma pesquisa e envia dados para a listbox. só que o foco sai da txtcod e vai para txtqtde. se bloqueio a txtqtde ela não consegue atualizar alguém pode me ajudar obrigado. este é o codigo que uso

Sheets("produtos").Select
Range("B3").Select
Dim contador As Integer
contador = 0
Do While ActiveCell.Value <> txt_cod.Text And contador < 150
ActiveCell.Offset(1, 0).Select
contador = contador + 1
Loop
If ActiveCell.Value = txt_cod.Text Then
txt_unit.Text = ActiveCell.Offset(0, 2).Value
txt_unid.Text = ActiveCell.Offset(0, 3).Value
txt_descricao.Text = ActiveCell.Offset(0, 1).Value
txt_estoque.Text = ActiveCell.Offset(0, 4).Value

Else
negativa.Show
txt_cod = ""
txt_descricao = ""
txt_unid = ""
txt_unit = ""
txt_estoque = ""
txt_cod.Enabled = True
End If
On Error GoTo error:
If txt_qtde = "" Then
txt_qtde = 1
sub_total.Text = txt_qtde * txt_unit
sub_total = FormatCurrency(sub_total)
Else
sub_total.Text = txt_qtde * txt_unit
sub_total = FormatCurrency(sub_total)
End If

'cupon = (txt_cod.Text + "   " + txt_qtde.Text + " x   " + txt_descricao.Text + "   " + txt_unit.Value + "  " + sub_total.Text)
cupon = ("x")
With Me.cupom
        .AddItem
        
        '.List(.ListCount - 1, 0) = cupon
        '.List(.ListCount - 1, 1) = sub_total
        
        On Error GoTo error
        txt_unit.Text = FormatCurrency(txt_unit)
        
        .List(.ListCount - 1, 0) = txt_cod
        .List(.ListCount - 1, 1) = txt_qtde
        .List(.ListCount - 1, 2) = cupon
        .List(.ListCount - 1, 3) = txt_descricao
        .List(.ListCount - 1, 4) = txt_unit
        .List(.ListCount - 1, 5) = sub_total
      
        'Let cupom.ColumnWidths = "60;0"

     Let cupom.ColumnWidths = "40;25;15;90;60;15"

        End With
Call CommandButton2_Click
txt_cod = ""
txt_qtde = ""
Me.txt_cod.SetFocus
error:

o que eu preciso é ao digitar o codigo jogar as informações na listbox apagar e o foco contiuar nela para uma rotina.

 
Postado : 16/08/2015 7:48 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

frança, para o que pretende o ideal é utilizar o Evento EXIT onde temos a propriedade "Cancel" que é "False" por padrão, e depois seta-la como "True"ao final da rotina, assim o SetFocus fiuncionará, de uma pesquisada no forum sobre "SetFocus textbox" ou evento Exit Textbox e encontrara varios tópicos a respeito de manter o foco no próprio controle.

[]s

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

 
Postado : 18/08/2015 11:31 am
(@franca)
Posts: 21
Eminent Member
Topic starter
 

mauro se vc baixou o formulario vc vai ver q tem a txtbox codigo e a txt qtde . talvez não fui claro ; o que preciso ao digitar o codigo por ex: 1010 ou 1020 ao digitar o quarto digito no caso 1010 o n° "0" ele ja fazer a pesquisa sem apertar o enter ou tab . tentei pelo evento after mas tem que apertar o enter ou tab consegui pelo evento chance só que nesta textbox tambem tem o evento key up q ao apertar F4 abre um form para colocar a qtde so que na hora q joga para a listbox joga 2 x olha o codigo abaixo

Private Sub txt_cod_Change()

Sheets("produtos").Select
Range("B3").Select
Dim contador As Integer
contador = 0
Do While ActiveCell.Value <> txt_cod.Text And contador < 150
ActiveCell.Offset(1, 0).Select
contador = contador + 1
Loop
If ActiveCell.Value = txt_cod.Text Then
txt_unit.Text = ActiveCell.Offset(0, 2).Value
txt_unid.Text = ActiveCell.Offset(0, 3).Value
txt_descricao.Text = ActiveCell.Offset(0, 1).Value
txt_estoque.Text = ActiveCell.Offset(0, 4).Value

Else
negativa.Show
txt_cod = ""
txt_descricao = ""
txt_unid = ""
txt_unit = ""
txt_estoque = ""
txt_cod.Enabled = True
sub_total = ""
End If
On Error GoTo error:
If txt_qtde = "" Then
txt_qtde = 1
sub_total.Text = txt_qtde * txt_unit
sub_total = FormatCurrency(sub_total)
Else
sub_total.Text = txt_qtde * txt_unit
sub_total = FormatCurrency(sub_total)
End If

'cupon = (txt_cod.Text + " " + txt_qtde.Text + " x " + txt_descricao.Text + " " + txt_unit.Value + " " + sub_total.Text)
cupon = ("x")
With Me.cupom
.AddItem

'.List(.ListCount - 1, 0) = cupon
'.List(.ListCount - 1, 1) = sub_total

On Error GoTo error
txt_unit.Text = FormatCurrency(txt_unit)

.List(.ListCount - 1, 0) = txt_cod
.List(.ListCount - 1, 1) = txt_qtde
.List(.ListCount - 1, 2) = cupon
.List(.ListCount - 1, 3) = txt_descricao
.List(.ListCount - 1, 4) = txt_unit
.List(.ListCount - 1, 5) = sub_total

'Let cupom.ColumnWidths = "60;0"

Let cupom.ColumnWidths = "40;25;15;90;60;15"

End With
Call CommandButton2_Click
txt_cod = ""
txt_qtde = ""
Me.txt_cod.SetFocus
error:
End Sub

esse codigo joga o produto qtde na lixt box
no cod abaixo na mesma txbox abre uo form se caso o produto for mais de 1 pois a ideia é fazer como um sistema de mercado.

Private Sub txt_cod_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Select Case KeyCode
Case vbKeyF2
UserForm4.Show
Case vbKeyF3
MsgBox Aplicativo & " " & AppVersao, vbInformation + vbOKOnly, "...::: SEI :::..."
Case vbKeyF4
UserForm5.Show
Case vbKeyF5
Dim Calculadora As Double
Calculadora = Shell("calc.exe", vbNormalFocus)
Case vbKeyF6

Case vbKeyEscape

'FECHA FORMULÁRIO
Beep
If MsgBox("Deseja sair da tela de manutenção das OS? Todos os dados na tela serão perdidos.", vbQuestion + vbYesNo, Aplicativo & " " & AppVersao) = vbYes Then
Unload Me
End If
End Select
End Sub

no caso da txtbox qtde olha só ela volta sozinha pois ja tinha colocado o evento enter

Private Sub txt_qtde_Enter()
txt_cod.SetFocus
End Sub

ou seja um dos problemas foi resolvido que é o foco na textbox so que joga 2x na listbox porque a ideia é por um leitor de codigo de barras pois estou desenvolvendo para um teste o codigo chefe esta na textbox cod com evento change

 
Postado : 19/08/2015 4:07 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Para que execute no change dó quando digitar o 4º digito adicione um if assim:

Private Sub seutextbox_change()

If Len(seutxtbox) = 4 Then
"codigo a ser executado quando digitar o 4º dígito no textbox"
Else
End if
End Sub

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

 
Postado : 24/08/2015 8:55 am
(@franca)
Posts: 21
Eminent Member
Topic starter
 

obrigado é isso mesmo

 
Postado : 26/08/2015 7:22 am