| |  | Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
|
Autor
|
Thema: VBA - Excel - Suchen und Ersetzen (3736 / mal gelesen)
|
Andi Beck Ehrenmitglied V.I.P. h.c. Konstrukteur

 Beiträge: 2614 Registriert: 02.10.2006
|
erstellt am: 22. Aug. 2016 18:26 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich habe ein VBA Makro, welches ich aus SolidWorks raus starte. Mit diesem Makro werden Dateieigenschaften in Excel-Tabellen übertragen. Nachdem die kpl. Tabelle erstellt ist, wird vor dem Speichern noch eine Suche / Ersetze Funktion aufgerufen. Dim Zelle As Range For Each Zelle In xlWs.UsedRange Zelle.Value = Replace(Zelle.Value, ";", " |") Next Zelle Diese Suche / Ersetze Funktion geht auch wunderbar. Nun habe ich aber festgestellt, das mir diese Funktion die Formatierung einer Spalte durcheinanderbringt. In Bild 01 seht ihr, wie es vor dieser Routine aussieht. Die Zellen sind in Standard formatiert. In Bild 02 seht ihr, wie es nach dieser Routine aussieht. Die Zellen sind teilweise in Standard bzw. als Zahl formatiert. Das ist ein fatales Verhalten, das ich mir nicht erklären kann. Rufe ich in Excel 2007 manuell diese Funktion auf, passiert diese Umformatierung der Spalte Gewicht nicht. Kann mir jemand dazu eine Erklärung bzw. auch Abhilfe geben? Momentan behelfe ich mir mit einer eingeschränkten Suche, welche diese Spalte unberührt lässt. Aber so richtig toll finde ich das nicht. Dim Zelle As Range For Each Zelle In xlWs.UsedRange.Columns("A:W").Cells Zelle.Value = Replace(Zelle.Value, ";", " |") Next Zelle Was soll ich tun? Besten Dank schon mal für diverse Hilfestellungen. Grüße, Andi ------------------ Hast du kein Problem? Such dir eins. ( Und löse es ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur

 Beiträge: 3815 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 22. Aug. 2016 19:19 <-- editieren / zitieren --> Unities abgeben:          Nur für Andi Beck
Hallo Andi. Da schreibt Dir ja scheinbar irgendwas den Dezimaltrenner um. Bist Du Dir sicher, dass das tatsächlich durch die gepostete Schleife stattfindet? Gruß, Torsten Edit: Ansonsten vielleicht mal mit dem Compare-Argument rumspielen?
[Diese Nachricht wurde von Torsten Niemeier am 22. Aug. 2016 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andi Beck Ehrenmitglied V.I.P. h.c. Konstrukteur

 Beiträge: 2614 Registriert: 02.10.2006
|
erstellt am: 22. Aug. 2016 19:42 <-- editieren / zitieren --> Unities abgeben:         
Zitat: Original erstellt von Torsten Niemeier:
Bist Du Dir sicher, dass das tatsächlich durch die gepostete Schleife stattfindet?
Hallo Torsten, hier bist du also auch zu finden. Ja, da bin ich mir sicher. Diese Schleife kam als letztes hinzu, und davor war alles in Ordnung. Und durch die untere Schleife passiert momentan auch nichts mehr. Aber das ist purer Zufall, das ich die Suche so simpel einschränken kann. Wäre die Spalte "Gewicht (X)" weiter links in der Tabelle, hätte das so nicht ausgereicht. Compare kenne ich noch nicht, muss ich mal suchen gehen. Grüße, Andi ------------------ Hast du kein Problem? Such dir eins. ( Und löse es ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beverly Mitglied Dipl.-Geologe (Rentner)
 
 Beiträge: 400 Registriert: 11.08.2007 Win 10 Pro, Office 97 bis Office 2016
|
erstellt am: 23. Aug. 2016 09:23 <-- editieren / zitieren --> Unities abgeben:          Nur für Andi Beck
Hi Andy, mal eine Frage: weshalb läufst du in einer Schleife über alle Zellen? Das geht auch auch auf einen Ritt Code: Columns("A:W").Replace What:=";", Replacement:="|", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False
------------------ Bis später, Karin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andi Beck Ehrenmitglied V.I.P. h.c. Konstrukteur

 Beiträge: 2614 Registriert: 02.10.2006
|
erstellt am: 23. Aug. 2016 20:36 <-- editieren / zitieren --> Unities abgeben:         
Zitat: Original erstellt von Beverly:
mal eine Frage: weshalb läufst du in einer Schleife über alle Zellen? Das geht auch auch auf einen Ritt
Hallo Karin, besten Dank für deine Hilfe. Nun, die Schleife habe ich durch Googlen gefunden und einfach eingebaut. Ich kenne mich sehr wenig mit Excel VBA aus und kann deshalb für und wieder schlecht einschätzen. Ich programmiere aber so einiges in SolidWorks und von hier starte ich auch das Makro. Dein Code funktioniert wunderbar über die kpl. Tabelle und lässt die Formatierung meiner "Material" Spalte in Ruhe. Dafür bekomme ich jetzt von Excel diese Meldung, wenn nichts zu Ersetzen war, und das ist zu 99% der Fall. Und diese Meldung ist auch noch hinter dem SolidWorks Fenster versteckt, sodass man alt und grau und der Prozess nicht abgeschlossen wird. Es darf keine Meldung kommen, da mein Makro mehrmals durch eine Schleife wiederholt aufgerufen und abgeschlossen wird. Kann man das Unterbinden? Grüße, Andi ------------------ Hast du kein Problem? Such dir eins. ( Und löse es ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hofe Mitglied Werkzeugmacher
 
 Beiträge: 440 Registriert: 12.01.2008 Computer: Aldi Schreibtisch: Ikea Werkbank: Baumarkt Software: 1967-2021, viele Updates und SP's, aber sicher nicht alle, deswegen immer wieder Sicherheitslücken
|
erstellt am: 23. Aug. 2016 22:09 <-- editieren / zitieren --> Unities abgeben:          Nur für Andi Beck
Zitat: Original erstellt von Andi Beck: Kann man das Unterbinden?
Hallo Andi, versuchs mal mit Application.DisplayAlerts = False am Anfang des Makros. Am Ende wieder auf "True" setzen, wenn gewünscht. Grüße Hofe
------------------ Ist mir egal, wer Dein Vater ist; solange ich angle läuft hier keiner übers Wasser! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andi Beck Ehrenmitglied V.I.P. h.c. Konstrukteur

 Beiträge: 2614 Registriert: 02.10.2006
|
erstellt am: 23. Aug. 2016 23:35 <-- editieren / zitieren --> Unities abgeben:         
Hallo Hofe, besten Dank, mit einer kleinen Änderung funktioniert es, Klasse.
Code: Excel.Application.DisplayAlerts = False
Ohne "Excel" bekomme ich eine Fehlermeldung. Wahrscheinlich, weil das Makro aus SolidWorks heraus startet und 2 Application vorhanden sind. Grüße, Andi ------------------ Hast du kein Problem? Such dir eins. ( Und löse es ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beverly Mitglied Dipl.-Geologe (Rentner)
 
 Beiträge: 400 Registriert: 11.08.2007 Win 10 Pro, Office 97 bis Office 2016
|
erstellt am: 24. Aug. 2016 14:05 <-- editieren / zitieren --> Unities abgeben:          Nur für Andi Beck
Hi Andi, leider bekomme ich vom Forum keine Meilbenachrichtigung bei neuen Beiträgen, sodass ich deine Rückfrage erste jetzt gelesen habe - aber du hast ja im Prinzip trotzdem die Lösung bekommen. Allerdings muss ich auf folgendes hinweisen: Zitat:
am Anfang des Makros. Am Ende wieder auf "True" setzen, wenn gewünscht.
Ich würde diesen Parameter am Ende des Makros UNBEDINGT IMMER wieder auf True setzen, denn False bleibt sonst die komplette Sitzung bestehen und es werden dann überhaupt keine Fehlermeldungen mehr von Excel augegeben - und das ist m.E. doch sehr bedenklich. ------------------ Bis später, Karin [Diese Nachricht wurde von Beverly am 24. Aug. 2016 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andi Beck Ehrenmitglied V.I.P. h.c. Konstrukteur

 Beiträge: 2614 Registriert: 02.10.2006
|
erstellt am: 24. Aug. 2016 15:29 <-- editieren / zitieren --> Unities abgeben:         
Hallo Karin, danke für deine Rückmeldung, aber mach dir keine Sorgen, ich habe bereits diesen Parameter wieder auf True gesetzt. Ich dachte auch schon, sicher ist sicher. Grüße, Andi ------------------ Hast du kein Problem? Such dir eins. ( Und löse es ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |