Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1000to1004
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

Letztes Zeichen loeschen

Letztes Zeichen loeschen
11.08.2008 10:21:00
Alex
Hallo @ all!
Ich habe mal wieder ein kleines Problem:
Ich scanne Barcodes in eins Excel-Vorlage. Dabei moechte ich immer die letzte Stelle dieses Barcodes (immer 0) loeschen und dies als Formel oder was auch immer in die Vorlage einbauen.
Weiss jemand wie ich das loesen kann?
Vielen Dank schon mal
Alex

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
=LINKS(A1;LÄNGE(A1)-1) oT
11.08.2008 10:23:00
backowe

AW: =LINKS(A1;LÄNGE(A1)-1) oT
11.08.2008 11:07:00
Alex
Hallo,
an diese Formel habe ich auch bereits gedacht, allerdings benoetige ich hierfuer eine Hilfsspalte!
Gibt es auch einen anderen Weg diese direkt beim Scannen zu loeschen?
Danke
Alex

Gibt es schon!
11.08.2008 11:14:00
backowe
Hi,
die Info, daß Du keine Hilfsspalte möchtest, hätte eigentlich in Dein Erstposting gehört! ;o)
VBA-Code:
Sub LetzesZeichenLoeschen()
Dim zelle As Range
For Each zelle In Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row)
  zelle = Left(zelle, Len(zelle) - 1)
Next
End Sub
Gruß Jürgen

Anzeige
AW: Gibt es schon!
11.08.2008 11:34:00
Alex
Hi!
Ja hab ich leider vergessen=)
Aber dein Code funktioniert nicht, es kommt die Meldung: Object variable or with block object not set
Ne Ahnung woran es liegen koennte?
Und noch eine Frage: wird die letzte Ziffer jetzt direkt beim Einscannen geloescht?
Vielen Dank schon mal
Alex

Hast Du den Bereich auf ..
11.08.2008 12:07:36
Backowe
Hi Alex,
... Deine Bedürfnisse angepaßt. Mir sagt die Fehlermeldung nichts. Ich habe den Code auf eine Zahl angepaßt.
VBA-Code:
Sub LetzeZahlLoeschen()
Dim Zelle As Range
For Each Zelle In Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row)
  If IsNumeric(Right(Zelle, 1)) Then _
    Zelle = Left(Zelle, Len(Zelle) - 1)
Next
End Sub
Gruß Jürgen

Anzeige
AW: Hast Du den Bereich auf ..
11.08.2008 12:37:48
Alex
Hallo
Danke auch dein Code funktioniert nun, nur wie gesagt moechte ich das in eine Vorlage einfuegen, die immer wieder verwendet wird und deshalb sollte das direkt beim einscannen geloescht werden!?!?
Nochmals Danke fuer deine Muehe
Alex

AW: =LINKS(A1;LÄNGE(A1)-1) oT
11.08.2008 12:28:45
David
Soweit ich das vom Barcode-Scannen kenne, wird der Code per "SendKey" übertragen, beendet von einer Zeilenschaltung (Enter).
Somit könntest du das Worksheet-Change-Ereignis nutzen.

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Worksheet_Change_Error
If Target.Column = 1 Then
Application.EnableEvents = False
Target = Left(Target, Len(Target) - 1)
End If
Worksheet_Change_Exit:
On Error GoTo 0
Application.EnableEvents = True
Exit Sub
Worksheet_Change_Error:
MsgBox Err.Description
GoTo Worksheet_Change_Exit
End Sub


Damit wird, wenn du in Spalte A (=1) eine Eingabe machst, diese Eingabe sofort darauf um eine Stelle von rechts gekürzt.
Den Bereich, der überwacht wird, musst du natürlich auf deine Bedürfnisse ändern.
Und Achtung! Nach einem Scan-Durchlauf solltest du die gesamte Spalte irgendwie kopieren und mit Werten einfügen, denn sobald du in einer Zelle der betreffenden Spalte eine nachträgliche Änderung ausführst, wird das Makro wieder gestartet und streicht dir wieder eine Stelle!
Vielleicht kann man das noch irgendwie abfangen, wüsste jedoch momentan nicht, wie.
Rückmeldung wäre nett.
Gruß
David
PS: Vielen Dank übrigens an Tobias, der mir geholfen hat, meine Idee in ein funktionierendes (!) Makro umzusetzen.
https://www.herber.de/forum/messages/1000794.html

Anzeige
AW: =LINKS(A1;LÄNGE(A1)-1) oT
11.08.2008 12:35:00
Alex
Hey Vielen Dank das funktioniert so, allerdings habe ich nicht verstanden was du meinst mit die Spalte kopieren?
Kann man dass auch eingrenzen, dass z.b das ganze nur fuer B4:B34 gilt?
Nochmals Danke fuer deine Loesung, hat mir sehr geholfen
Gruss Alex

So!
11.08.2008 12:46:38
Backowe
Hi,
If Not Intersect(Target, Range("B4:B34")) Is Nothing And Target.Count = 1 Then ...
Gruß Jürgen

AW: So!
11.08.2008 13:07:40
Alex
Vielen Dank So funktioniert es wirklich =)
Habt mir sehr geholfen!
Gruss Alex

AW: So!
11.08.2008 13:30:55
Alex
HeyHey!
Vielen Dank So funktioniert das ganze wirklich!
Gruss Alex

AW: So!
11.08.2008 14:00:00
Alex
Hi ich habe noch eine Frage;
Wenn ich jetzt nicht nur die Spalte B habe sondern auch noch D fuege ich doch nochmal den selben Code ein nur eben mit D richtig?
Muss ich den irgendwie anders bezeichnen bzw was muss ich noch aendern?
Nochmals Danke
Alex

Anzeige
AW: So!
11.08.2008 14:06:00
David
Das Worksheet_Change-Ereignis kann es nur einmal geben, deswegen jeglichen weiteren Code innerhalb des Sub...End Sub.
Ich denke mal, du kannst die beiden Range-Werte mit AND kombinieren. Das kann sicher einer der wahren VBA-Experten hier beantworten.
Gruß
David

Union
11.08.2008 14:21:00
Backowe
Hi Alex,
If Not Intersect(Target, Union(Range("B4:B34"), Range("D4:D34"))) Is Nothing And Target.Count = 1 Then ...
Gruß Jürgen

AW: Union
11.08.2008 15:06:57
Alex
Dankeschoen!
Funktioniert perfekt

AW: =LINKS(A1;LÄNGE(A1)-1) oT
11.08.2008 13:09:00
David
...allerdings habe ich nicht verstanden was du meinst mit die Spalte kopieren?
Das Makro wird gestartet, sobald sich in der definierten Range ein Wert ändert. Angenommen du scannst deine Barcodes in die Spalte A. Dabei wird dann für jeden Barcode das letzte Zeichen abgeschnitten. Wenn du mit dem Scannen fertig bist und aus was auch immer für Gründen in einen der Barcodes zur Bearbeitung gehst und dort etwas ändert, wird das Makro natürlich auch wieder gestartet und schneidet dir NOCH eine Stelle ab.
Deswegen meinte ich, dass du nach dem Scannen die eingescannten Werte vor einer eventuellen Bearbeitung erst mal "sichern" musst, damit diese unverändert bleiben.
Gruß
David.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige