Microsoft Excel

Herbers Excel/VBA-Archiv

bestimmte Werte aus einer Reihe heraus selektieren

Betrifft: bestimmte Werte aus einer Reihe heraus selektieren von: Marcus
Geschrieben am: 12.08.2004 08:24:25

Hallo,
Ich habe folgendes Problem:

Ich möchte in einer Reihe von Zahlen und Buchstaben einen ganz bestimmten Teil ausblenden und in meine Excel-Zelle einfügen.
Es handelt sich in diesem Fall nur um 2 verschiedene Codes.
Die Codes werden mit einem Barcodescanner eingescannt.

Beispiel 1: gescannt: 2K8087177825000030
ich brauche aber nur: 8087177825 (also die ersten beiden und die letzen 6 weg)

Beispiel 2: gescannt: 1CDEC8000150889 oder DEC8000150889
ich brauche aber nur: 8000150889 (also nur die letzten 10 werden gebraucht)

Beide Werte kommen in einer Tabelle vor, beide Werte ändern sich ständig, in den Werten gibt es kein Sonderzeichen, nur Buchstaben und ganze Zahlen.

Also nicht ganz so schwer. Es gäbe ja eine Möglichkeit über eine =Wenn...-Formel. Dafür brauche ich aber pro Eingabefeld ein Ausgabefeld. Das ganze sollte aber so laufen, das ich schlichtweg die Zelle markiere, scanne und der selektierte Wert steht in der Zelle. Der Bereich, wo die Werte eingegeben werden, ist bekannt und ändert sich nicht.

Im voraus schon mal vielen Dank
Marcus

  


Betrifft: AW: bestimmte Werte aus einer Reihe heraus selektieren von: EtoPHG
Geschrieben am: 12.08.2004 09:12:59

Kannst Du bitte die Bedingungen in WENN-DANN formulieren.
Aus Deiner Erklärung geht das nicht hervor.

Gruss Hansueli


  


Betrifft: AW: bestimmte Werte aus einer Reihe heraus selektieren von: Jörg Gradert
Geschrieben am: 12.08.2004 09:48:31

Hallo Marcus,
hier mein Versuch, Rechtsklick auf den Tabellenblattnamen, Code anzeigen, Code einfügen, Eingabebereich anpassen,VBA-Editor schliessen, Probescannen.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:A10")) Is Nothing Then 'Range("A1:A10") ist der Eingabebereich, anpassen!
If Len(Target) = 18 Then 'Länge des Scancodes 18 Zeichen, dann
Target.Value = Mid(Target, 3, 10) 'die ersten 2 und letzten 6 Zeichen abschneiden
Else 'sonst
Target.Value = Right(Target, 10) 'die letzen 10 Zeichen verwenden
End If
End If
End Sub


Gruss Jörg


  


Betrifft: AW: bestimmte Werte aus einer Reihe heraus selektieren von: HermannZ
Geschrieben am: 12.08.2004 10:41:06

Hallo Marcus

über Formel

für Fall 1:=TEIL(A1;3;10)
für Fall 2:=TEIL(A1;6;10)

Gruß hermann


  


Betrifft: AW: bestimmte Werte aus einer Reihe heraus selektieren von: Marcus
Geschrieben am: 13.08.2004 07:24:00

Erst mal danke, für die Hilfe. Die Formel von Hermann geht, aber ich brauche für diese Formel eine Eingabezelle (mit der Formel) und eine Ausgabezelle (fürs Ergebnis). Habe ich aber nicht, soll es möglichst auch nicht geben.

Der Code von Jörg funktioniert leider nicht, ich habe verschiedenes ausprobiert, aber es passiert rein gar nichts, ausser das der Originalcode da steht.

Also, die Scannereingabe entspricht der Eingabe einer Tastatur, nur schneller.
Das kann man mit einer Tastatur nachstellen.
Der erste Wert hat 15 Stellen, der zweite 18.

Das eingeben sollte so laufen: Zelle markieren, Zahl scannen, Wert wird selektiert, Wert in der Zelle wird korrigiert.

Ich finde die Idee von Jörg aber schon sehr gut.

Vielleicht ist da nur ein klitzekleiner Denkfehler drin?


  


Betrifft: AW: bestimmte Werte aus einer Reihe heraus selektieren von: Jörg Gradert
Geschrieben am: 13.08.2004 12:32:23

Hallo Markus,
Mögliche Ursachen:
1.Mein Code muss in das Codefenster des Tabellenblatts, nicht in ein Modul.
2.Der Eingabebereich ist A1:A10, das muss an deine Bedürfnisse angepasst werden.
3.Dein Scanner löst nicht die Eingabetaste aus (kann er umprogrammiert werden?), sonst nach dem Scannen Entertaste betätigen.

Nachfrage:
Funktioniert mein Code bei dir, wenn Du eine Zahl von Hand eingibst?

Gruss Jörg


  


Betrifft: AW: bestimmte Werte aus einer Reihe heraus selektieren von: Marcus
Geschrieben am: 13.08.2004 17:58:50

Hy,
Nein, der Code funktioniert auch nicht per Hand. Der Scanner macht automatisch "Enter". Denn nach der Eingabe wird bereits die nächste Zelle markiert.

Ich habe den Code ins Tabellenfenster kopiert, und auch als Modul laufen lassen. Den Eingabebereich habe ich angepasst. Nix. Es passiert nix! Muss man eventuell im Excel etwas aktivieren? Ich werde mal ein leeres Tabellenblatt zum Testen aufmachen. Vielleicht wird in dem Lieferschein was unterdrückt...

Um die Sache etwas verständlicher zu machen:

Es geht hier um einen Lieferschein mit 20 Positionen.
Jede Position enthält zwei Nummern.

Fall 1: In Spalte C wird in den Zellen C24 bis C43 ein 15 stelliger Code hinterlegt, von dem ich aber nur die letzten 10 brauche. Der Code enthält ganze Zahlen und Grossbuchstaben (z.B: 1CDEC8000150625)

Fall 2: In Spalte D wird in den Zellen D24 bis D43 ein 18 stelliger Code hinterlegt, von dem ich aber die ersten 2 und die letzten 6 ausblenden muss. Auch der Code enthält ganze Zahlen und Grossbuchstaben (z.B: 2K8087177607000010)

Also könnte man das in zwei unterschiedliche Routinen aufbröseln. Ich denke, das sich die Zahlen in der nächsten Zeit nicht gross verändern werden. Auch könnte man ganz gut falsche Eingaben verhindern, aber da kann mir ja jemand später noch einen heissen Tip zu geben :-)

Ich würde mich echt freuen, wenn das klappt. Es würde mir eine ganze Menge Arbeit ersparen...

Grüsse
Marcus


  


Betrifft: AW: bestimmte Werte aus einer Reihe heraus selektieren von: Marcus
Geschrieben am: 13.08.2004 18:07:27

Hallo, Jörg!
Ich habe ein neues Tabellenblatt aufgemacht und den Code reinkopiert und es geht!
Also scheint das mit unserem Lieferschein nicht zu klappen. Aber warum den bloss...?
Frage: Ich habe in meiner Antwort vorher nochmal genau beschrieben, wie es sein soll. Könnte man das nicht für jede Spalte aufdröseln und so eine Art Fehlerkorrektur einbauen?
Also ich scanne in einer Zelle für 15 stelligen Code den 18 stelligen und es kommt eine Warnung, beim schliessen der Warnung wird die Zelle zurückgesetzt...
Und natürlich das gleiche für die Zellen mit 18 stelligen Code...

Grüsse Schröer


  


Betrifft: Daten Gültigkeit von: Jörg Gradert
Geschrieben am: 13.08.2004 19:26:53

Hallo Markus,
Bereich, eine Spalte, des Eingabebereichs markieren und
Menü Daten, Gültigkeit..., Gültigkeitskriterium Textlänge.
Ich möchte dich noch darauf hinweisen, dass dein eines Beispiel sowohl 13-stellige als auch 15-stellige Scancodes aufzeigt.
Das andere Beispiel hat 18-stelligen Scancode.

Gruss Jörg


  


Betrifft: AW: bestimmte Werte aus einer Reihe heraus selektieren von: Marcus
Geschrieben am: 13.08.2004 18:57:03

Hallo,
Also, ich habe folgendes herausbekommen:

In unserem Lieferschein wird ein ActivX-Control namens LinearBarcode benutzt. Dieses Control funktioniert folgendermassen:

Das Control wird ausgewählt und im Tabellenblatt ein Bild eingefügt.
Unter Eigenschaften des Barcodebildes kann ich unter der Option "Linked Cell" die Zelle eingeben, die als Barcode dargestellt werden soll. Wenn ich den VBA-Code von Jörg in mein Tabellenblatt einfüge, funktioniert alles mit dem Rechnen und so. Aber sobald ich die Zelle mit dem LinearBarcode verbinde, funktioniert der VBA-Code nicht mehr!

Gibt es noch eine andere Möglichkeit aus der Zelle mit dem errechneten Endergebnis einen Barcode zu machen? Oder vielleicht eine Option "Erst über VBA ausrechnen, dann Barcode erstellen?

Ich weiss nur, das man das ActiveX-Control auch vom Programmierfenster aus steuern kann. Ich kann nämlich die Eigenschaften aufrufen.

Gruss
Marcus


  


Betrifft: Frage offen ich passe VBA, Active-X-VControl von: Jörg Gradert
Geschrieben am: 13.08.2004 19:49:54

Hallo Markus,
das übersteigt dann doch meine geringen VBA-Kenntnisse. Hier kann ich leider nicht weiterhelfen und stelle darum die Frage auf offen.

Gruss Jörg


 

Beiträge aus den Excel-Beispielen zum Thema "bestimmte Werte aus einer Reihe heraus selektieren"