Excel - Excel 2010 Barcode Scan P roblem Doppelte Einträge ver meidenn

Asked By Tobias on 02-Aug-12 04:18 AM
Hallo. Ich kenne mich leider nicht sonderlich gut mit VBA aus und hoffe auf eure Hilfe.
Folgendes Problem:
Mir liegen mehrere Barcodes vor die als Wert eine Zahl ausgeben (1 bis 500). Diese werden beim Scan in Spalte A (A3:A500) eingetragen. Gleichzeitig wird jedem Wert bzw. jeder Zahl in Spalte C (C3:C500) die aktuelle Uhrzeit zugewiesen. Dies erreiche ich mit folgendem Code:

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("A3:A500")) _
Is Nothing Then
Target.Offset(0, 1) = Format(Time, "hh:mm:ss")
End If

End Sub

ABER: Nun soll keine Zahl doppelt in Spalte A eingetragen werden. Wenn die Zahl bzw. der Wert bereits in Spalte A existiert, dann soll in dieser Zeile die Uhrzeit in Spalte C eingetragen werden. Und wenn in der Spalte C ebenfalls bereits ein Wert existiert, dann soll der Scan ignoriert werden.
Irgendwie sehe ich den Wald vor lauter B??umen nicht. Kann man das l??sen indem man den Code mit einigen if then Schleifen erg??nzt?
--
Ansicht auf Narkive:
http://narkive.com/YkxvrtYm


Tobias replied to Tobias on 02-Aug-12 05:08 AM
Im ersten Textabschnitt meine ich bez??glich Eintragung der Uhrzeit nat??rlich Spalte B und nicht Spalte C. Sorry f??r diesen Tippfehler. Ich hoffe jemand kann mir weiterhelfen.
--
Ansicht auf Narkive:
http://narkive.com/YkxvrtYm
Claus Busch replied to Tobias on 02-Aug-12 05:43 AM
Hallo Tobias,

Am Thu, 02 Aug 2012 08:18:54 +0000 schrieb Tobias:



wenn ich dich richtig verstanden habe, sollte es so funktionieren:

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A3:A500")) Is _
Nothing Or Target.Count > 1 Then Exit Sub

If WorksheetFunction.CountIf(Range("A3:A500"), Target) = 1 Then
Target.Offset(0, 1) = Format(Time, "hh:mm:ss")
ElseIf WorksheetFunction.CountIf(Range("A3:A500"), _
Target) = 2 Then
If WorksheetFunction.VLookup(Target, Range("A3:C500"), _
3, 0) > 0 Then
Target.ClearContents
MsgBox "Scan schon vorhanden"
Else
Cells(WorksheetFunction.Match(Target, _
Range("A1:A500"), 0), 3) = Format(Time, "hh:mm:ss")
Target.ClearContents
End If
End If
End Sub


Mit freundlichen Gr??en
Claus Busch
--
Win XP Prof SP3 / Vista Ultimate SP2
Office 2003 SP3 /2007 Ultimate SP3