Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1172to1176
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Uebergabe durch einen Barcodescanner

Uebergabe durch einen Barcodescanner
Daniel
Hallo zusammen
Folgendes "Problemchen" habe ich:
Meine Datei hat 14 Sheets (Jan-Dez, Erfassen und Tabelle4). Da im Sheet Erfassen in Zelle A2 von einem Barcodescanner eine Nummer geschrieben wird, ist es "zwingend" nötig, dass das Sheet Erfassen und die Zelle A2 immer aktiv ist. Da es Mitarbeiter gibt, die neugierig sind und in den Sheets "herumzappen", hat mir der Scannerlieferant den Scanner nun so konfiguriert, dass er vor der Nummer ein "F9" sendet. Nun zum Problem. Wie müsste der Code aussehen, damit Excel beim Schicken des "F9" das Sheet Erfassen und die Zelle A2 Aktiviert, befor die Nummer vom Scanner kommt. (Die Schreibgeschwindigkeit des Scanners könnte verlangssamt werden)
Hier mal der Code so wie er bis jetzt ohne Probleme läuft (sofern A2 Aktiv ist)
Dim FERow As Long
Dim FERow1 As Long
Dim Datum As Date
Dim R As Range
Private Sub Worksheet_Change(ByVal Target As Range)
'Dim R As Range
'Wurde A2 geändert?
Set R = Intersect(Target, Range("A2"))
If R Is Nothing Then Exit Sub
'Ereignisse aus, sonst rufen wir uns selber auf
Application.EnableEvents = False
Sheets("Erfassen").Select
Cells(2, 1).Select
Datum = Cells(1, 1)
With Sheets("Erfassen")
FERow = .Cells(Rows.Count, "B").End(xlUp).Row + 1
.Range("B" & FERow) = .Range("A2")
FERow1 = .Cells(Rows.Count, "B").End(xlUp).Row + 1
.Range("C" & FERow) = Datum
End With
Sheets("Erfassen").Select
Cells(2, 1).Activate
Cells(2, 1).ClearContents
'Ereignisse wieder an
Application.EnableEvents = True
'MsgBox "Willkommen im Training" '& Range " FERow = .Cells(Rows.Count, "D").End(xlUp).Row +1
'.Range("B" & FERow) = .Range("A2")
End Sub
Danke schon mal für eure Bemühungen
Gruss Dani

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Uebergabe durch einen Barcodescanner
26.08.2010 20:11:29
fcs
Hallo Dani,
ich hab keine Ahnung ob und wie man das vom Scanner gesendete F9 auswerten kann. Mit den folgenden Anpassungen wird das "Herumzappen" beendet/verhindert/erschwert.
Das Schreiben der Scannerdaten in die Liste wird explizit per Makro gestartet (dabei werden dann alle Blätter außer "Erfassen" ausgeblendet und in einer Variablen der Scannstatus True gesetzt) und gestopped (alle Blätter einblenden und Scannstatus auf False setzen).
Zusätlich wird während des Scannens die Selektion anderer Zellen verhindert. Es wird sofort wieder die Zelle A2 aktiviert.
Gruß
Franz
Option Explicit
Dim FERow As Long
Dim FERow1 As Long
Dim Datum As Date
Dim R As Range
Dim bScannen As Boolean
Sub ScannStarten()
Dim oSheet As Object
bScannen = True
For Each oSheet In ThisWorkbook.Sheets
If LCase(oSheet.Name)  "erfassen" Then
oSheet.Visible = xlSheetHidden
End If
Next
End Sub
Sub ScannStop()
bScannen = False
Dim oSheet As Object
For Each oSheet In ThisWorkbook.Sheets
If LCase(oSheet.Name)  "erfassen" Then
oSheet.Visible = True
End If
Next
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
'Dim R As Range
'Wurde A2 geändert?
Set R = Intersect(Target, Range("A2"))
'    If R Is Nothing Then
If R Is Nothing Or bScannen = False Then
Exit Sub
Else
'Ereignisse aus, sonst rufen wir uns selber auf
Application.EnableEvents = False
If ActiveSheet.Name  "Erfassen" Then
Sheets("Erfassen").Select
Cells(2, 1).Select
End If
Datum = Cells(1, 1)
With Sheets("Erfassen")
FERow = .Cells(Rows.Count, "B").End(xlUp).Row + 1
.Range("B" & FERow) = .Range("A2")
FERow1 = .Cells(Rows.Count, "B").End(xlUp).Row + 1  'Diese Zeile dürfte überflüssig  _
sein!!
.Range("C" & FERow) = Datum
End With
Cells(2, 1).Activate
Cells(2, 1).ClearContents
'Ereignisse wieder an
Application.EnableEvents = True
'MsgBox "Willkommen im Training" '& Range " FERow = .Cells(Rows.Count, "D").End(xlUp).Row +1
'.Range("B" & FERow) = .Range("A2")
End If
End Sub
Private Sub Worksheet_Deactivate()
If bScannen = True Then
Me.Activate
Me.Cells(2, 1).Activate
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If bScannen = True Then
Cells(2, 1).Activate
End If
End Sub

Anzeige
AW: Uebergabe durch einen Barcodescanner
28.08.2010 14:23:39
Daniel
Hallo Franz
Danke schon mal für deine Hilfe. Werde das ganze mal einbauen und schauen, wie es sich in der Praxis behauptet. Vom Scanner her gäbe es auch noch andere Möglichkeiten vor der Zahl etwas andere zu senden. Was wäre denn von Excel (bzw. VBA) möglich als String (oder so) vor der Zahl zu erkennen oder auszuwerten, damit das Sheet Erfassen A2 aktiviert würde? Wenn du mir einzelne Varianten als Auswahl geben kannst, so kann ich mal mit dem Gerätelieferant schauen, ob auch der Scanner so etwas unterstützt.
Er kann "Enter", alle "F-Tasten", sowie diverse andere Varianten senden. Eventuell wäre ein "Enter" vor der Zahl, danach kommt zum erfassen der Zahl sowieso eines, hier am hilfreichsten. Natürlich darf Excel beim ersten "Enter" nich in die nächste Zeile springen (dies würde jedoch nur das Sheet "Erfassen" betreffen). Für mich als Laie wäre dies wahrscheinlich am einfachsten zu bewerkstelligen. Was meinst du dazu?
Danke schon mal für Dein/Euer "Kopfzerbrechen"
Gruss Dani
Anzeige

22 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige