Notifications
Clear all

Manter Cursos No mesmo TextBox

5 Posts
2 Usuários
0 Reactions
874 Visualizações
chook
(@chook)
Posts: 197
Estimable Member
Topic starter
 

Bom dia Amigos,
Tenho uma rotina que é utilizada para consulta de preços, onde o usuário com uma leitora de código de barras vai bipando os produtos e vai apresentando o resultado.
O que preciso é que após cada leitura o textbox1 seja apagado e fique com o cursor disponível para a próxima leitura.

Segue abaixo o código que estou utilizando:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim UltimaLinha, i, z As Integer
Worksheets("Banco").Select
With Worksheets("Banco").Range("G:G")
    Set localizar = .Find(TextBox1.Value, LookIn:=xlValues, LookAt:=xlWhole)
    If Not localizar Is Nothing Then
        descricao.ForeColor = &H80000008
        localizar.Activate
        descricao.Caption = localizar.Offset(0, 1).Value
        codigointerno.Caption = localizar.Offset(0, -2).Value
    Else
        descricao.ForeColor = &HFF&
        descricao.Caption = "PRODUTO NÃO CADASTRADO"
        TextBox1.Value = Clear
        Exit Sub
    End If
End With
Worksheets("Entrada_de_Dados").Select
Range("A1").Select
UltimaLinha = Worksheets("Entrada_de_Dados").Cells(Cells.Rows.Count, 1).End(xlUp).Row
UltimaLinha = UltimaLinha + 1
Range("A" & UltimaLinha).Select
    ActiveCell.Offset(0, 0).Value = TextBox1.Value
    ActiveCell.Offset(0, 1).Value = codigointerno.Caption
    ActiveCell.Offset(0, 2).Value = descricao.Caption
    ActiveCell.Offset(0, 3).Value = 1
For i = 1 To UltimaLinha
    If Range("A" & i).Value = Val(TextBox1.Value) Then
        soma = soma + 1
    End If
Next
qtdtotal.Caption = Format(UltimaLinha - 1, "0000")
qtd.Caption = Format(soma, "0000")
ean.Caption = TextBox1.Value
End Sub

Atenciosamente,

Alex Lacerda
[email protected]

 
Postado : 09/01/2013 7:26 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Cara acho que resolve.

TextBox2.Value = "" ' Limpa a textbox
TextBox2.SetFocus ' Coloca o cursor no textbox

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

 
Postado : 09/01/2013 9:23 am
chook
(@chook)
Posts: 197
Estimable Member
Topic starter
 

Amigo,

Quando utilizamos a rotina Exit(ByVal Cancel As MSForms.ReturnBoolean), ela de alguma forma não atende a este comando :/

Atenciosamente,

Alex Lacerda
[email protected]

 
Postado : 09/01/2013 9:37 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

chook, esta questão é um pouco mais complicada, o evento exit cmo outros tem a propriedade Cancel = False por padrão, se não redefini-la para True dependendo da ação não funciona, no momento não tenho como reproduzir o efeito, mas pequise tambem sobre os Eventos AfterUpdate e BeforeUpdat, que se não me engano o ideal é utilizar um dos dois em conjunto com o exit ou sozinhos.
Estou de saida no momento, se não resolver, mais a noite vejo um exemplo para você.

[]s

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

 
Postado : 09/01/2013 10:17 am
chook
(@chook)
Posts: 197
Estimable Member
Topic starter
 

Amigos valeu as dicas,

Consegui resolver com o código abaixo:

Dim UltimaLinha, i, z As Integer
Worksheets("Banco").Select
With Worksheets("Banco").Range("G:G")
    Set localizar = .Find(TextBox1.Value, LookIn:=xlValues, LookAt:=xlWhole)
    If Not localizar Is Nothing Then
        descricao.ForeColor = &H80000008
        localizar.Activate
        descricao.Caption = localizar.Offset(0, 1).Value
        codigointerno.Caption = localizar.Offset(0, -2).Value
        preco.Caption = Format(localizar.Offset(0, 82).Value, "R$ " & "#,##0.00")
    Else
        descricao.ForeColor = &HFF&
        descricao.Caption = "PRODUTO NÃO CADASTRADO"
        Call PlayWAV
        TextBox1.Value = Clear
        TextBox1.SetFocus
        Cancel = True
    Exit Sub
    End If
End With
Worksheets("Entrada_de_Dados").Select
Range("A1").Select
UltimaLinha = Worksheets("Entrada_de_Dados").Cells(Cells.Rows.Count, 1).End(xlUp).Row
UltimaLinha = UltimaLinha + 1
Range("A" & UltimaLinha).Select
    ActiveCell.Offset(0, 0).Value = TextBox1.Value
    ActiveCell.Offset(0, 1).Value = codigointerno.Caption
    ActiveCell.Offset(0, 2).Value = descricao.Caption
    ActiveCell.Offset(0, 3).Value = 1
For i = 1 To UltimaLinha
    If Range("A" & i).Value = Val(TextBox1.Value) Then
        soma = soma + 1
    End If
Next
qtdtotal.Caption = Format(UltimaLinha - 1, "0000")
qtd.Caption = Format(soma, "0000")
ean.Caption = TextBox1.Value

TextBox1.Value = Clear
TextBox1.SetFocus
Cancel = True
End Sub

Atenciosamente,

Alex Lacerda
[email protected]

 
Postado : 14/01/2013 1:33 pm