Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1864to1868
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
Einen Teil des Textes aus Zelle entferne
20.01.2022 14:57:37
Albert
Hallo,
ich habe z.B.: folgende Werte (siehe unten) in Spalte AJ4:AJ1000 in den Zellen stehen.
Die Werte in einer Zelle werden per ListBox Auswahldialog in die Zellen geschrieben.
Warum bei den aus Excel kopierten und hier unten eingefügten Zellwerten ein " " steht wenn mehrere Werte in der Zelle stehen weis ich nicht.
In Excel sind keine " " in der Zelle ersichtlich.
Meine VBA Aufgabenstellung:
Aus diesen Zellen soll der Text "exportieren_TEL" gelöscht werden.
Dabei soll der Zeilenumbruch falls ander Inhalte noch enthalten sind, erhalten bleiben.
Bitte um Lösung der VBA Aufgabe.
Danke!
Werte die z.B. in den Excel Zellen stehen:
"nachbearbeiten
exportieren_TEL"
nachbearbeiten
"archivieren
nachbearbeiten
exportieren_TEL
Importiert_Tel"
exportieren_TEL
"archivieren
nachbearbeiten"
"exportieren_TEL
exportieren_BH"

24
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Einen Teil des Textes aus Zelle entferne
20.01.2022 19:45:21
Yal
Hallo Albert,
"Bitte um Lösung der VBA Aufgabe." --> Dann von uns die Bitte um einen Grundgerüst in Form einer hochgeladenen Exceldatei mit einer entsprechenden Datenstruktur (alles was nicht offen im Internet gehört, muss zuerst raus!)
Denn diese Zusatzaufwand nimmt keiner auf sich. Ich hoffe, Du hast dafür Verständnis.
VG
Yal
AW: Einen Teil des Textes aus Zelle entferne
20.01.2022 21:01:56
Albert
https://www.herber.de/bbs/user/150552.xlsm
Hallo Yal,
danke, das du dich um mein Problem annimmst.
Ich habe die Datei bereinigt und habe diese hochgeladen.
FG
AW: Einen Teil des Textes aus Zelle entferne
21.01.2022 08:47:36
Yal
Hallo Albert,
probiere folgenden Code:

Sub Exportieren_TEL_löschen()
Dim Z As Range
Application.EnableEvents = False
With Worksheets("Kunden")
For Each Z In .Range(.Range("AJ5"), .Range("AJ99999").End(xlUp)).Cells
Z.Value = Replace(Z.Value, "exportieren_TEL", "")
Next
End With
Application.EnableEvents = True
End Sub
VG
Yal
Anzeige
Das sollte aber auch ....
21.01.2022 10:21:29
{Boris}
Hi Yal, hi Albert,
...ohne Schleife gehen: ;-)

Sub Test()
Columns("AJ").Replace What:="exportieren_TEL", Replacement:="", LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
End Sub
VG, Boris
AW: Einen Teil des Textes aus Zelle entferne
21.01.2022 11:26:32
Albert
Userbild
Hallo Yal und Boris,
Beim Test des Codes von Boris wurde leider kein einziger Wert gelöscht.
Der Code von Yal funktioniert Super.
Nur der Zeilenumbruch bei mehreren vorhandenen Werten in der Zelle wird durch das Löschen noch nicht entfernt (siehe hochgeladene Datei).
Wenn es ohne Schleife auch geht ist es schön, muss aber nicht sein weil das Makro nicht so oft aufgerufen wird (ca. 2 x im Monat).
Bitte nochmals um Unterstützung.
Danke!
Anzeige
Nicht nachvollziehbar...
21.01.2022 11:29:50
{Boris}
Hi,

Beim Test des Codes von Boris wurde leider kein einziger Wert gelöscht.
Du hast auch die richtige Spalte im Code referenziert?
VG, Boris
AW: Nicht nachvollziehbar...
21.01.2022 12:34:50
Albert
An Boris:
ja "AJ" ist die richtige Spalte mit dem Statuswert "exportieren_TEL"
Dann bleibt es bei "Nicht nachvollziehbar"...
21.01.2022 12:36:32
{Boris}
Hi,
wenn Du magst, lad mal die Datei mit dem nicht funktionierenden Code hoch.
VG, Boris
AW: Einen Teil des Textes aus Zelle entferne
21.01.2022 13:36:49
Yal
Hallo Albert,
deine Vorgaben für den Trennzeichen war mir nicht ganz zu erfassen.
neue Version:

Sub Exportieren_TEL_löschen()
Dim Z As Range
Dim S
Dim Neu As String
Application.EnableEvents = False
With Worksheets("Kunden")
For Each Z In .Range(.Range("AJ5"), .Range("AJ99999").End(xlUp)).Cells
Neu = ""
For Each S In Array("archivieren", "nachbearbeiten", "exportieren_BH", "Importiert_Tel", "Bereits_exportiert_TEL")
If InStr(1, Z.Value, S, vbTextCompare) Then Neu = Neu & vbCr & S
Next
Z.Value = Mid(Neu, 2) 'erste vbCr raus
Next
End With
Application.EnableEvents = True
End Sub
vg
Yal
Anzeige
AW: Einen Teil des Textes aus Zelle entferne
21.01.2022 16:38:58
Albert
https://www.herber.de/bbs/user/150574.xlsm
Hallo Yal und Boris,
Beim Test des neuen Codes von Yal wurde nun leider auch kein Wert gelöscht und das Makro läuft auf einen Fehler.
Die möglichen Werte die in der Spalte "AJ" stehen können, sind leider nicht fix sondern
können bei Bedarf in der DropDown-Liste (siehe Register DropDown) erweitert od. geändert werden)
For Each S In Array("archivieren", "nachbearbeiten", "exportieren_BH", "Importiert_Tel", "Bereits_exportiert_TEL")
Kann das Problem gelöst werden, ansonsten muss ich halt das Makro bei Bedarf anpassen.
Ich habe eine Testdatei mit euren beiden Makros hochgeladen (siehe oben).
Der Makroname fängt einmal mit Boris_ und einmal mit Yal_ an. Da stehen jeweils eure Makros drinnen.
Bitte die Makros darin testen und Versuchen, diese zum Laufen zu bringen.
Danke!
FG
Albert
Anzeige
Keine Ahnung weshalb...
21.01.2022 16:56:32
{Boris}
Hi,
...aber mit vorheriger Selektion der Spalte AJ im Code geht es:

Sub til()
Columns("AJ:AJ").Select
Selection.Replace What:="exportieren_TEL", Replacement:="", LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
End Sub
Was das Select damit zu tun hat und weshalb es (nur?) damit funktioniert, weiß ich grad nicht.
VG, Boris
AW: Keine Ahnung weshalb...
21.01.2022 17:29:42
Albert
Hi Boris,
bei mir werden leider immer noch keine Werte entfernt.
Bitte nochmals überprüfen.
Danke!
Hab ich geprüft...
21.01.2022 17:39:13
{Boris}
Hi,
...bei mir geht es. Somit hab ich leider keine weitere Ahnung :-//
VG, Boris
Anzeige
AW: Keine Ahnung weshalb...
21.01.2022 17:48:08
Yal
... Albert,
Hast Du den Blattschutz vorher entfernt?
VG
Yal
AW: Keine Ahnung weshalb...
21.01.2022 18:44:54
Albert
Userbild
Danke an euch Beide!
Ja, ohne Blattschutz laufen beide ohne Fehler.
Für Boris:
Ohne Schleife ist Makro natürlich schneller.
Es bleibt aber noch das Problem zum Entfernen des Zeilenumbruchs.
Für Yal:
Der Zeilenumbruch ist jetzt ganz weg siehe hochgeladenes Bild.
Es soll aber bei den nicht entfernten Texten zur Trennung ein Zeilenumbruch enthalten bleiben.
Bitte nochmals um Unterstützung.
Danke!
Anzeige
Den Zeilenumbruch...
22.01.2022 12:15:05
{Boris}
Hi,
...bekommt man einfach weg, wenn man ihn mit sucht (& vbLf):

Sub Boris_exportieren_TEL_WertLöschen()
Columns("AJ").Replace What:="exportieren_TEL" & vbLf, Replacement:="", LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
End Sub
VG, Boris
AW: Den Zeilenumbruch...
22.01.2022 12:41:35
Albert
Userbild
Hi Boris,
Funktioniert Perfekt, wenn der Wert "exportieren_TEL" in der Zelle oben od. in der Mitte steht.
Wenn der Wert aber unten od. alleine in der Zelle steht, dann wird der Wert "exportieren_TEL" nicht entfernt.
Bitte nochmals um Hilfe.
Danke!
FG
Albert
Anzeige
AW: Den Zeilenumbruch...
22.01.2022 14:36:47
Albert
Sorry Boris, aber ich bin gerade draufgekommen, das der Wert "exportieren_TEL" eigentlich mit dem Wert "Bereits_exportiert_TEL" einfach ersetzt werden soll.
Sonst kann ich nicht mehr erkennen welche Datensätze ich schon exportiert habe.
Bitte bitte das hier geschriebene Anstatt das vorher geschriebene einbauen.
Danke!
Dann habe ich keine Wünsche mehr.
AW: Den Zeilenumbruch...
24.01.2022 19:30:51
Albert
Hallo Boris,
bitte bitte hilf mir noch einmal, und baue mir den zuletzt geäusserten Wunsch noch ein.
Ich kann herumprogrammieren was ich will, aber ich kriege es nicht hin. Dafür kann ich VBA viel zu wenig.
Bitte Danke!
FG
Albert
Anzeige
AW: Den Zeilenumbruch...
24.01.2022 22:39:50
ralf_b
was wird denn das Albert?
Tanzt du hier auf zwei Hochzeiten?
Boris hat dir einen Ersetzencode gegeben, der dein Suchwort mit einem folgenden Zeilenumbruch sucht. den Zeilenumbruch gibts nicht in den von dir geschilderten Fällen. Du kannst dir sicher ableiten was nun zu tun ist. Oder du nutzt meinen Code und ersetzt dort den Text im entsprechenden Schleifendurchlauf. Aber bitte nicht mit Columns("AJ") als Bezugsbereich.
Kein Ahnung was du dir dabei denkst, das du dir zwei verschiedene Codes schreiben läßt und sie dann nicht zusammen bringst.
AW: Den Zeilenumbruch...
25.01.2022 11:36:04
Albert
Hallo Ralf,
oje, jetzt bist du mich immer noch nicht los.
Ich wollte nicht auf zwei Hochzeiten tanzen aber ich habe mir gedacht, das dafür eigentlich zwei Makros notwendig sind.
Eines für den Datenexport und dann eines um den Status richtigzustellen. Deshalb die zwei getrennten Beschreibungen meiner Anliegen.
Aber das das auch in einem Makro geht, ist noch schöner.
In deinem Code im entsprechenden Schleifendurchlauf habe ich die Änderungen nicht zusammengebracht.
Aber ich habe den Code von Boris geändert und vor dem Ende in dein Makro eingebaut.
Columns("AJ").Replace What:="exportieren_TEL", Replacement:="Bereits_exportiert_TEL", LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
Funktioniert jetzt alles Perfekt!
Danke euch Beiden herzlichst für diese tolle Lösung!
Anzeige
AW: Den Zeilenumbruch...
25.01.2022 17:52:15
Albert
Hallo Ralf, ich traue mich eh schon fast nicht mehr fragen, aber ich bekomme folgendes trotz Stundenlanger Recherche und Versuche nicht hin.
Vieleicht bist du noch einmal bereit mir zu helfen.
Ich will den Zellbereich "AJ" über den Namensmanager definieren. Name = "StatusSpalte_Kunden", Bezug auf =Kunden!$AJ:$AJ
If ws.Cells(lRow, "AJ") # wenn ich den Code z.B.: wie folgt ändere # If ws.Cells(lRow, "StatusSpalte_Kunden") wird nichts mehr ausgeführt
Auch mit # Intersect(Target, Range(".....") bekomme ich es nicht hin. Bin einfach fürs Programmieren zu schwach.
In einem anderen Makro will ich "AK" durch den Namensmanager mit Namen "Erstellungsdatum", Bezug auf =Kunden!$AK:$AK ändern
If IsEmpty(Me.Cells(c.Row, "AK")) Then
Auch das gelingt mir nicht.
AW: Den Zeilenumbruch...
25.01.2022 19:24:24
ralf_b
anstatt zu Fragen solltest du die Paar Sachen mal recherchieren. Verwendung von Bereichsnamen,
Wenn du Name = "StatusSpalte_Kunden" auf ein gantze Spalte festlegst (Kunden!$AJ:$AJ)
kann das nicht hinhauen ws.Cells(lRow, "StatusSpalte_Kunden") so Cells(ZeilenNr,SpaltenNr) nicht so Cells((Zeilen, Spaltenbereich)
ein Name wird unter anderem so angewendet. Range("StatusSpalte_Kunden")
Range("StatusSpalte_Kunden").Cells(lrow) entspricht AJ1 wenn lrow = 1
Aber ich rate dazu nicht die gesamte Spalte( 1 Mio Zeilen) zu referenzieren, sondern nur den genutzten Bereich.
AW: Den Zeilenumbruch...
26.01.2022 15:19:10
Albert
Ralf, vielen Dank nochmals für deine Hilfe!
FG
Albert

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige