2016-04-04 5 views
0

Ich muss den Cursor in die richtige Zelle in Excel bewegen, wenn ich einen Barcode scanne, aber derzeit geht es nach unten. Ich möchte es nicht in den Excel-Optionen ändern, da der Zellencursor nach unten gehen muss, wenn ich auf anderen Blättern auf Enter klicke.Ich versuche Barcode zu scannen und Excel in die richtige Zelle bewegen zu lassen

+0

Sie etwas tun kann das 'Workbook_SheetActivate' Ereignis helfen kann mit http://excel.tips.net/T002073_Choosing_Direction_after_Enter_On_a_Workbook_Basis.html –

+0

Es ist nicht zu funktionieren scheint. Ich bin mir nicht sicher, ob ich, wenn ich den Code einfüge, nicht das Richtige treffe, um es zu speichern oder effektiv zu machen. Ich klicke nur auf den Speichern-Knopf. Wenn ich aus VBA ausschließe und zurückgehe, ist es immer noch da. – anra

+0

Sie müssen diesen Code für Ihre Bedürfnisse anpassen - unwahrscheinlich, dass es genau so funktionieren wird wie geschrieben ... –

Antwort

1

Eine Lösung, die ich gefunden habe, ist dieser Code-Block, mit dem ich anfänglich begonnen habe.

Öffnen Sie ein ActiveX-Textfeld vom Entwickler unter Einfügen und legen Sie es in das Blatt, in das Sie scannen möchten. Wählen Sie A1, und klicken Sie auf das Textfeld. Stellen Sie sicher, dass die Entwurfsmodusansicht im Entwickler deaktiviert ist (sehen Sie in der Funktionsleiste der Symbolleiste nach).

Die Zeile mit ** um es herum ist, was Sie ändern müssen. Dies ist auf Länge eingestellt, aber Sie können auch mit anderen Dingen wie Cases herumspielen. Versuchen Sie, einen Barcode mit 12345 als Wert zu erstellen.

Private Sub TextBox1_Change() 
**If Len(TextBox1.Value) = 5 Then** 
    ActiveCell.Value = TextBox1.Value 
    ActiveCell.Offset(1).Activate 
    Application.EnableEvents = False 
    TextBox1.Activate 
    TextBox1.Value = "" 
End If 

End Sub 

Beispiel für einen Fall. Versuchen Sie, einen Barcode mit "Abfall R - 1" als Wert zu erstellen.

Private Sub TextBox1_Change() 

Dim ws As Worksheet, v, k, i, j 
Set ws = Worksheets("Sheet1") 

v = TextBox1.Value 
k = 0 
i = 0 
j = 0 

Select Case v 

Case "Waste R - 1": i = 2 
k = 1 
j = "Waste R - 1" 
'Start i at whatever column you want to start at 
'k is the type of case and if statement you want to run (I have several, but for simplicity, I have only attached one) 


End Select 

    If k = 1 Then 

    ws.Cells(1, 1) = ws.Cells(1, 1).Value + 1 
    ' adds number into cell (A1) to reference which column to be in 
    ' Starts in Column A then adds a value of one to reference column B 

    i = ws.Cells(1, 1) 
    'Sets i = to the A1 value 

    Cells(1, i).Value = j 
    ' You may be able to set this to textbox1.value 
    ' Says to put the Textbox Value into whatever column and row A 

    TextBox1.Activate 
    TextBox1.Value = "" 
End If 
End Sub 

Stellen Sie sicher, einen Wert von 2 in Zelle A1 zu setzen, um zu starten.

Sie könnten dies in eine Schleife verwandeln, wenn Sie es wollten. Ich bin mir sicher, dass es leichtere Möglichkeiten gibt, aber ich habe eine Excel-Vorlage erstellt, um eine Modulreferenz in das VBA-Blatt einzufügen. Es ist sehr einfach zu aktualisieren. Lassen Sie uns wissen, wenn ich mit anderen Barcode Fragen

Verwandte Themen