Autor
|
Thema: Leerstellen bei mehreren Zellen löschen (9583 mal gelesen)
|
inv-Kristof Mitglied Dipl-- Ing. (FH)
Beiträge: 1135 Registriert: 01.01.2004 HP 8710w, Win Vista 64x, IV 2009 SP2 Intel® Core™ 2 Duo T9500 2,6 GHz, 4 GB RAM nVidia® Quadro FX 3600M, 17" 1920x1200 ---------------- AMD 64bit 3200+; 2GB DDR400 GeForce 6600GT 128MB Win Vista 64x IV 2009 SP2
|
erstellt am: 15. Nov. 2006 14:02 <-- editieren / zitieren --> Unities abgeben:
|
tunnelbauer Ehrenmitglied V.I.P. h.c. Bauingenieur
Beiträge: 7085 Registriert: 13.01.2004 ich hab eh keine Probleme damit...
|
erstellt am: 15. Nov. 2006 14:07 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
|
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 15. Nov. 2006 14:10 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
Public Sub ersetzen() Dim i As Integer For i = 1 To 1000 Tabelle1.Cells(i, 2) = Replace(Tabelle1.Cells(i, 1).Value, " ", "", , 2) Next i End Sub [edit] @ Thomas: zu einfach ;D [/edit] ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... [Diese Nachricht wurde von runkelruebe am 15. Nov. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
inv-Kristof Mitglied Dipl-- Ing. (FH)
Beiträge: 1135 Registriert: 01.01.2004 HP 8710w, Win Vista 64x, IV 2009 SP2 Intel® Core™ 2 Duo T9500 2,6 GHz, 4 GB RAM nVidia® Quadro FX 3600M, 17" 1920x1200 ---------------- AMD 64bit 3200+; 2GB DDR400 GeForce 6600GT 128MB Win Vista 64x IV 2009 SP2
|
erstellt am: 15. Nov. 2006 14:54 <-- editieren / zitieren --> Unities abgeben:
nicht schlechte Idee, es gibt aber ein Aber. In der Zelle steht ein Satz. Ich will nur die Leerstellen in der Zelle nach diesem Satz ersetzen. Mit einem leerzeichen kann ich leider nicht. Beispiel: abcd_efgh______ _- Leerstellen (zu ersetzende Stellen)aber nicht zwischen den Wörtern Gruß kristof
------------------ -------- Gruß Kristof Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tunnelbauer Ehrenmitglied V.I.P. h.c. Bauingenieur
Beiträge: 7085 Registriert: 13.01.2004 ich hab eh keine Probleme damit...
|
erstellt am: 15. Nov. 2006 15:00 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
Ist richtig... dies Info war aber vorher nicht gegeben... (merkst du wie wichtig es ist, dass du uns alle Infos von Anfang gibst ? ) Dann musst du halt das Ersetzkriterium verändern - zB auf 2 Leerzeichen; dann werden immer 2 Leerzeichen ersetz - wenn du Pech hast bleibt dann noch eines am Ende über. Das kannst du dann aber nur noch mit den Befehlen LEFT und LEN rauskitzeln... (wenn die Anzahl deiner Leerzeichen am Ende immer konstant ist und dir vor allem bekannt, kannst du diese gleich von Anfang mit LEN und LEFT rausholen... - aber du verrätst uns ja nicht wie es aussieht...) PS: Sorry für das eine U da war meine Clickerei zu wild - war nicht Absicht... ------------------ Grüsse Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 15. Nov. 2006 15:06 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
sind es immer gleich viele? dann ersetze im String des Suchwertes von " " auf " " Stehen die immer an der gleichen Stelle? dann ersetze den Startwert der Suche auf z.B. 8 ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 15. Nov. 2006 15:33 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
Zitat: Original erstellt von tunnelbauer: Dann musst du halt das Ersetzkriterium verändern - zB auf 2 Leerzeichen; dann werden immer 2 Leerzeichen ersetz - wenn du Pech hast bleibt dann noch eines am Ende über.
ist auch nicht weiter schlimm, dann halt zweimal aufrufen :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 15. Nov. 2006 15:38 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
Hallo zusammen, in xls mit Bordmitteln: =RECHTS(Zelle mit Text;Anzahl Zeichen) in einer Extra-Spalte (oder Zeile)? Oder doch in VBA mit "right" Zitat: aber du verrätst uns ja nicht wie es aussieht
von Thomas stimme ich voll zu ;-) [Edit] Frage - zur weiteren Verwirrung: Unterstützt "Suchen+Ersetzen" wildcards?"[/Edit] Ende der wirren Ansätze, Frederik [Diese Nachricht wurde von Paulchen am 15. Nov. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tunnelbauer Ehrenmitglied V.I.P. h.c. Bauingenieur
Beiträge: 7085 Registriert: 13.01.2004 ich hab eh keine Probleme damit...
|
erstellt am: 15. Nov. 2006 15:39 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
Zitat: Original erstellt von Thomas Harmening: ist auch nicht weiter schlimm, dann halt zweimal aufrufen :-)
Versteh ich grade nicht... Wenn am Ende 4 Leerzeichen sind, schmeisst Excel sofort alle raus... Wenn am Ende 5 Leerzeichen sind, dann schmeisst Excel 4 Leerzeichen sofort raus... 1 bleibt über und kann mit Suchen & Ersetzen nicht elemeniert werden - siehe mein erstes Post bzw Reaktion seitens inv-Kristof.. ------------------ Grüsse Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 15. Nov. 2006 15:46 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
Hm. @Thomas und Thomas: Wie wäre es mit der Suche nach der max. Anzahl an Leerzeichen (z.B. 5), dann 4 usw. mit "Suchen + Ersetzen"? Stellt das beide zufrieden? Habe ich was übersehen? Frederik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tunnelbauer Ehrenmitglied V.I.P. h.c. Bauingenieur
Beiträge: 7085 Registriert: 13.01.2004 ich hab eh keine Probleme damit...
|
erstellt am: 15. Nov. 2006 15:49 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
Nö - tut es nicht... Wir wollen ja alle aufeinmal raushaben - nicht erst nach dem 5 Durchlauf... deswegen wäre es schön zu wissen wie es wirklich aussieht und welche Regelmäßigkeiten auftreten (oder auch nicht...) Wahrscheinlich müsste man dann aber mit Nicole irgendwas in VBA entwickeln was das rechte Zeichen prüft und im Falle eines " " ein "Replace" durchführt... PS: ich glaube wir sind mit unseren Ideen für Kristof zu schnell... wir sollten kurz mal Inne halten... ------------------ Grüsse Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 15. Nov. 2006 15:53 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
wartet ungernsteht denn nach Deinem Satz wenigstens ein Punkt, nach dem man dann suchen könnte und rechts davon die Leerzeichen ersetzen? oder hat sich das alles schon erledigt und Du hattest nur keine Zeit uns das mitzuteilen? ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
inv-Kristof Mitglied Dipl-- Ing. (FH)
Beiträge: 1135 Registriert: 01.01.2004 HP 8710w, Win Vista 64x, IV 2009 SP2 Intel® Core™ 2 Duo T9500 2,6 GHz, 4 GB RAM nVidia® Quadro FX 3600M, 17" 1920x1200 ---------------- AMD 64bit 3200+; 2GB DDR400 GeForce 6600GT 128MB Win Vista 64x IV 2009 SP2
|
erstellt am: 15. Nov. 2006 16:15 <-- editieren / zitieren --> Unities abgeben:
so schnell kann ich nicht beantworten. ) die Kriterien kann ich auch nicht verändern. Es müssen immer alle Stellen, die rechts stehen, gelöscht werden. Es kann keine einzige Leerzeilestehen. Die Wörte sind unterschiedlich lang. Gruß Kristof ------------------ -------- Gruß Kristof Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 15. Nov. 2006 16:23 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
Nochmal ich - kann nicht innehalten Zitat: steht denn nach Deinem Satz wenigstens ein Punkt, nach dem man dann suchen könnte und rechts davon die Leerzeichen ersetzen?
Grmbl - nachdem es mir das oben verschmissen hat - die Funktion "right" in VBA hilft nix (speziell: runkelruebe)??? Also´ne Schleife, die immer schön das erste Zeichen von rechts entfernt - solange, bis es rechts keine Leerzeichen mehr gibt... Also: Code: if right(text;1) = "" then hau-wech-die-******** ...
Ungetestet Für mehr reicht's bei mir leider nicht... Frederik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 15. Nov. 2006 16:32 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
ohne ne geuppte Mappe oder mind. 5 Probesätze mach ich hier gar nix! denn da: hab ich leider keine Zeit für. ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 15. Nov. 2006 17:11 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
hmm, hmm, hmm, Thomas, du hast recht -denkfehler meinereiner :-) ich würde einfach den Befehl =Glätten() anwenden, sofern es die Daten im Tabellenblatt zulassen oder basierend auf Nicoles Schleife :-) Code: Sub leer() Dim i As Integer Dim leer As StringFor i = 1 To 1000 leer = Trim(Cells(i, 2)) 'Leerzeichen hinten und vorne weg While InStr(1, leer, " ") > 0 ' 2 × Leerzeichen leer = Replace(leer, " ", " ") ' 2 × Leer, 1 × Leer Wend Tabelle1.Cells(i, 2) = leer Next i End Sub
[Diese Nachricht wurde von Thomas Harmening am 15. Nov. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
inv-Kristof Mitglied Dipl-- Ing. (FH)
Beiträge: 1135 Registriert: 01.01.2004 HP 8710w, Win Vista 64x, IV 2009 SP2 Intel® Core™ 2 Duo T9500 2,6 GHz, 4 GB RAM nVidia® Quadro FX 3600M, 17" 1920x1200 ---------------- AMD 64bit 3200+; 2GB DDR400 GeForce 6600GT 128MB Win Vista 64x IV 2009 SP2
|
erstellt am: 15. Nov. 2006 17:21 <-- editieren / zitieren --> Unities abgeben:
|
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 15. Nov. 2006 17:34 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
Hallo zusammen, hilft das (in xls 2000 läuft's) - vorher Bereich markieren Code: Option ExplicitSub LeerZ_Loeschen_r() 'löscht die Leerzeichen am Ende von Texten innerhalb der Auswahl Dim str_Text As String 'urspr. Text Dim int_i As Integer 'Zähler für Zeilen Dim int_j As Integer 'Zähler für Spalten Dim lng_TextLaenge As Long int_i = 1 int_j = 1 'Markierung zellenweise durchlaufen: While int_j <= Selection.Columns.Count While int_i <= Selection.Rows.Count str_Text = Selection.Cells(int_i, int_j).Value 'Text auslesen lng_TextLaenge = Len(str_Text) 'Anzahl Zeichen auslesen While Right(str_Text, 1) = " " 'Während letztes Zeichen = Leerzeichen... lng_TextLaenge = lng_TextLaenge - 1 '... Textlänge um 1 kürzen str_Text = Left(str_Text, lng_TextLaenge) Wend Selection.Cells(int_i, int_j).Value = str_Text 'geänderten Text eintragen int_i = 1 + int_i 'nächste Zelle Wend int_j = 1 + int_j int_i = 1 'zurücksetzen für nächste Spalte Wend MsgBox "Markierung bearbeitet", vbOKOnly, "Hinweis" End Sub
Keine endgültige Musterlösung, aber naja. Aller Anfang... Bitte um Nachsicht, kann allerdings Kritik vertragen FrederikEine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 15. Nov. 2006 18:26 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
Code: Sub leer() Dim i As Integer Dim leer As String Dim cell As RangeIf Selection.Cells.Count = 1 Then Beep MsgBox "Sie müssen einen Bereich auswählen!" Exit Sub End If For Each cell In Selection ' leer = Trim(cell) 'Leerzeichen hinten und vorne weg ;Ltrim() ;Rtrim() While InStr(1, leer, " ") > 0 ' 2 × Leerzeichen leer = Replace(leer, " ", " ") ' 2 × Leer, 1 × Leer Wend cell = leer Next End Sub
Code einer Schaltfläche zuweisen, alternativ einer Tastenkombi Bereich auswählen und Makro ausführen - entfernt Leerzeichen vorne, hinten und alle die mehr als 1 Leerzeichen gross sind will man explizit nur die rechten Leerstellen nach den String weg haben, so verwende man RTrim(Text) bei nur links entfernen LTrim(Text) Ansonsten links und rechts vom String Trim(Text)
[Diese Nachricht wurde von Thomas Harmening am 15. Nov. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 15. Nov. 2006 20:57 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
Hallo Thomas, zu später Stunde... Muß mir das mal in Ruhe ansehen. Auf den ersten Blick ist Deine Routine auf zwei Zeichen begrenzt - kann man aber ändern?! Was meint Kristof (wir sind zu schnell...)? Guten Abend, Frederik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 15. Nov. 2006 21:35 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
[e]...[/e] beliebig viele Anzahlen von LZ, egal wo in der Zelle kann ich leider auch nur in kompliziert: Code: Option Explicit Public Sub LZEntfernen() Dim i As Integer, j As Integer Dim strNeu As String Dim AlterInhalt For i = 1 To Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row AlterInhalt = Split(Tabelle1.Cells(i, 1), , -1) For j = 0 To UBound(AlterInhalt) If AlterInhalt(j) <> "" Then strNeu = strNeu & " " & AlterInhalt(j) If j > 0 Then If AlterInhalt(j) = "" And AlterInhalt(j - 1) <> "" Then strNeu = strNeu & AlterInhalt(j) End If End If End If Next j Tabelle1.Cells(i, 2) = Trim(strNeu) strNeu = "" Next i End Sub
Das muß auch einfacher gehen. [e] vergeßt das... habe grad Thomas' probiert, hätte ich vorher machen sollen hmpff, Asche auf mein Haupt. Schmucker 7-Zeiler der genau das tut : ) und bevor noch einer fragt: nein, ich kann immer noch keine kurzen Schleifen [/e] ...und ich kann mir einfach nicht vorstellen, daß es da keine Funktion im Excel für gibt...
Eigentlich noch wer ohne Fahrschein? ; )
------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...
[Diese Nachricht wurde von runkelruebe am 15. Nov. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 15. Nov. 2006 22:58 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
Zitat: Original erstellt von Paulchen: ...Muß mir das mal in Ruhe ansehen. Auf den ersten Blick ist Deine Routine auf zwei Zeichen begrenzt - kann man aber ändern?!
und was macht das? Zitat: Original erstellt von runkelruebe: ...und ich kann mir einfach nicht vorstellen, daß es da keine Funktion im Excel für gibt...
mit Bordmittel: Zelle A1 steht " ich bin ein Leerzeichen und hinten noch ganz viele " in A2 = Glätten(A1) wenn es viele verteile Zellen sind, würde ich ein ein weiteres Blatt aufmachen und mit =Glätten(Tabellenblatt!A1) arbeiten und dann mittels kopieren...oder das alte Blatt wegwerfen... zumindest für den hilfreich, der kein Vba kann Solche Strings mit Leerzeichen kommen meist aus einem import... da vielleicht vorher solch eine Importdatei, die als Ascii vorliegt, bereinigen. Oder halt in Excel, die Importsheet mit einer weiteren Sheet(formeln) aufbereiten - so das bei mehrmaligen Import nicht die nachfolgenden Berechnungen / Auswertungen, verhauen. ...Asche auf mein Haupt - willst wohl graue Haare bekommen ? :-) [Diese Nachricht wurde von Thomas Harmening am 16. Nov. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 16. Nov. 2006 09:01 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
Moin, ich habe mir die (zweite) Routine von Thomas H. nochmal angesehen. Ein großes Lob an dieser Stelle (Thomas ist EIN feedback ja lieber als 1.000 Ferraris ). Kurz, knackig und wirkungsvoll sozusagen. Da habe ich mir umsonst die Mühe gemacht, die - mir unbekannte - Trim-Funktion nachzubauen... Wobei: "Trim" ist auf Leerzeichen beschränkt, meine sub nicht. Dafür ist mein Code unnötig lang und stellenweise etwas umständlich :-( Mischungen und Anpassungen sind allerdings denkbar. Naja, gelernt habe ich jedenfalls was dabei. Als Komfortgewinn könnte ich mir noch eine banale inputbox vorstellen, die abfragt, wie viele (Leer)Zeichen im Text gelöscht werden sollen. Wer`s mag und wer`s braucht... Nochmal zur Begrenzung auf zwei Zeichen Zitat: ... und was macht das?
Macht eigentlich nix. Ein sinnvoller Satz trennt die Wörter durch ein Leerzeichen, nicht mehr und nicht weniger. Ich kann mir aber durchaus vorstellen, daß bei irgendeinem wirren Import durchaus mehr als zwei LZ zwischen den Wörtern auftauchen. Gut, dann paßt man sich halt für diesen (seltenen) Fall die Sub an. Ich will ja keine negative Kritik üben, sondern nur auf eine "alles umfassende Allgemeingültigkeit" hinweisen - sofern es die in der Praxis überhaupt gibt . Gruß, Frederik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 16. Nov. 2006 09:15 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
@Paulchen, eigentlich sollte nach: und was macht das? das stehen: Code: While InStr(1, leer, " ") > 0 ' 2 × Leerzeichen leer = Replace(leer, " ", " ") ' 2 × Leer, 1 × Leer Wend
Solange Instring(leer) sich 2 Leerzeichen befinden, ersetze es mit einem Leerzeichen und wieder zurück.irgendwie hat es mir das gestern zweimal rausgehauen... und es ist doch immer gut, dass es immer mehrere Möglichkeiten gibt :-) [Diese Nachricht wurde von Thomas Harmening am 16. Nov. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 16. Nov. 2006 10:08 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
Hallo Thomas, ich nehme die Asche von Nicoles Haupt, multipliziere sie mit dem (beliebigen) Faktor 528 und verteile sie über meiner Matschbirne ! Ich wurde von runkelruebe auch schon darauf hingewiesen. Hatte beim Testen das Problemchen, daß er mir über DREI Leerzeichen (innen) hinweggesprungen ist - muß wohl irgendein Würmchen gewesen sein. Deshalb habe ich auch so hartnäckig nachgebohrt. Damit die Asche besser durchsackt, noch eine Kleinigkeit voranstellen - es könnte ja sein, daß ein User mehrere Bereiche markiert (Stichwort: Allgemeingültigkeit)...
Code: 'Prüfung auf Anzahl der markierten Bereiche: If Selection.Areas.Count > 1 Then Beep MsgBox "Mehr als ein Bereich markiert!" & vbCrLf & vbCrLf & _ "Bitte Auswahl auf einen zusammenhängenden Bereich beschränken.", vbExclamation + vbOKOnly, "Achtung" Exit Sub End If'Prüfung auf Anzahl der markierten Zellen (Anzahl SOLL > 1): If Selection.Cells.Count = 1 Then Beep MsgBox "Nur eine Zelle markiert!", vbExclamation + vbOKOnly, "Achtung" Exit Sub End If
Fazit: Deine Sub macht alles, was man braucht (Leerzeichen betreffend). Ich danke für Deine geduldigen Rückmeldungen!!!Frederik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
inv-Kristof Mitglied Dipl-- Ing. (FH)
Beiträge: 1135 Registriert: 01.01.2004 HP 8710w, Win Vista 64x, IV 2009 SP2 Intel® Core™ 2 Duo T9500 2,6 GHz, 4 GB RAM nVidia® Quadro FX 3600M, 17" 1920x1200 ---------------- AMD 64bit 3200+; 2GB DDR400 GeForce 6600GT 128MB Win Vista 64x IV 2009 SP2
|
erstellt am: 16. Nov. 2006 21:36 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas, vielen Dank für die einfachste Lösung. Die Formel ist für mich ausreichend. Es werden dabei alle Leerzeichen nach dem Satz-Ende entfernt. Klasse!! ------------------ -------- Gruß Kristof Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cossi Mitglied
Beiträge: 33 Registriert: 14.12.2006
|
erstellt am: 15. Dez. 2006 12:56 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
Hallo zusammen, ich hab da ne Frage: wie kann ich mit vba alle Leerzeichen in einer Tabelle entfernen? bisher hab ich mir mit diesem code geholfen
Code: Public Sub ersetzen() Dim i As Integer For i = 1 To 1000 Sheet1.Range("G1", "H & i") = Replace(Sheet1.Cells(i, 1).Value, " ", "", , 2) Next i End Sub
Jedoch arbeitet dieser nur auf einer Spalte. Kann der Code so modifiziert werden, dass die gesamte Tabelle von voranstehenden Leerzeiczhen befreit wird? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 15. Dez. 2006 13:15 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
|
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 18. Dez. 2006 18:26 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
Hallo, da muß ich kurz mal Einspruch erheben. Dieser Code: Sub x() Cells.Replace " ", "" End Sub
entfernt ALLE Leerzeichen, nicht nur die vorangestellten ;-( Dafür ist er sehr kurz und sehr effektiv;) .Die Aufgabe Zitat: Jedoch arbeitet dieser nur auf einer Spalte. Kann der Code so modifiziert werden, dass die gesamte Tabelle von voranstehenden Leerzeiczhen befreit wird
ließe sich z.B. mit LTrim lösen - siehe Beiträge von Thomas H. weiter oben. Hier mal ein (verkürzter) Vorschlag, der über mehrere Spalten hinweg arbeitet:Code: Sub y() 'vorher einen BEREICH markieren, NICHT das gesamte Blatt!!! Dim zelle As Variant For Each zelle In Selection zelle.Value = LTrim(zelle.Text) Next End Sub
Gruß, FrederikEine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |