Autor
|
Thema: Excel-Formatierung über VBA (1294 mal gelesen)
|
Robert VBA Mitglied
Beiträge: 11 Registriert: 20.02.2007
|
erstellt am: 20. Feb. 2007 00:26 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen. Ich habe ein Problem und komme nicht weiter. Die Aufgabe ist folgende: 1. Import der Daten aus externer Schnittstelle in 41 Tabellenblätter. 2. Suche in allen Tabellenblätter die Zeilen mit dem Wort "Vorbereitung", markiere die gefundenen Zeilen, setzte die Schriftfarbe blau, die Größe auf 12 und Fett. 3.Das Problem ist folgendes: Da bei jedem Import der alte Datenbereich durch einen neuen überschrieben wird, kann nun der Begriff "Vorbereitung" theoretisch in jedem Tabellenblatt in einer anderen Zeile stehen. Genau Punkt 3. ist mein Problem. Wie kann man über VBA die Formatierung schreiben, dass zuerst in allen Tabellenblätter die Formatierung zurückgesetzt wird (vieleicht "Selection.ClearFormats"?) und meine neue (Punkt 2.) in allen Tabellenblätter angewendet wird? Für Hilfe danke ich im voraus. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nepumuk Mitglied Entwicklungsleiter
Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 20. Feb. 2007 04:48 <-- editieren / zitieren --> Unities abgeben: Nur für Robert VBA
Hallo Robert, einfach so: Code: Public Sub prcFormatting() Dim objSheet As Worksheet, objCell As Range Dim strAddress As String Application.ScreenUpdating = False For Each objSheet In ThisWorkbook.Worksheets With objSheet.Cells .ClearFormats Set objCell = .Find(What:="Vorbereitung", LookAt:=xlWhole) If Not objCell Is Nothing Then strAddress = objCell.Address Do With objCell.Font .Bold = True .ColorIndex = 5 .Size = 12 End With Set objCell = .FindNext(objCell) Loop While Not objCell Is Nothing And objCell.Address <> strAddress End If End With Next Application.ScreenUpdating = True End Sub
------------------ Gruß Nepumuk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Robert VBA Mitglied
Beiträge: 11 Registriert: 20.02.2007
|
erstellt am: 20. Feb. 2007 21:16 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank. Das sieht gut aus. Nur die Implemetierung gelingt mir noch nicht recht. Irgendwo muss ich definieren, dass alle Sheets gewählt werden sollen um die Prozedur durchzuführen. Ich bekomme eine Synatyfehler Meldung. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nepumuk Mitglied Entwicklungsleiter
Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 20. Feb. 2007 21:41 <-- editieren / zitieren --> Unities abgeben: Nur für Robert VBA
|
Robert VBA Mitglied
Beiträge: 11 Registriert: 20.02.2007
|
erstellt am: 20. Feb. 2007 21:51 <-- editieren / zitieren --> Unities abgeben:
HM. Wieso bekomme ich dann Dyntaxfehler ausgegeben? Ich habe den code jetzt einfach kopiert ohne etwas zu ändern und trotzdem kommt immer noch "Fehler beim Komilieren" -> "Syntaxfehler". Woran liegt das? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nepumuk Mitglied Entwicklungsleiter
Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 20. Feb. 2007 21:56 <-- editieren / zitieren --> Unities abgeben: Nur für Robert VBA
|
Robert VBA Mitglied
Beiträge: 11 Registriert: 20.02.2007
|
erstellt am: 20. Feb. 2007 21:58 <-- editieren / zitieren --> Unities abgeben:
ich habe die 2003 Version: Hier das ganze Makro: Sub prcFormatting() 'Test mit Hilfe Forum Dim objSheet As Worksheet, objCell As Range Dim strAddress As String Application.ScreenUpdating = False For Each objSheet In ThisWorkbook.Worksheets With objSheet.Cells .ClearFormats Set objCell = .Find(What:="Vorbereitung", LookAt:=xlWhole) If Not objCell Is Nothing Then strAddress = objCell.Address Do With objCell.Font .Bold = True .ColorIndex = 5 .Size = 12 End With Set objCell = .FindNext(objCell) Loop While Not objCell Is Nothing And objCell.Address <> strAddress End If End With Next Application.ScreenUpdating = True End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Robert VBA Mitglied
Beiträge: 11 Registriert: 20.02.2007
|
erstellt am: 20. Feb. 2007 22:00 <-- editieren / zitieren --> Unities abgeben:
ist dem Makro der jeweilige Name der Tabellenblätter egal? Das Makro muss doch irgendwie wissen, dass es alle Tabellenblätter einbeziehen muss. Das ist aber für mich in deinem code nicht zu erkennen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nepumuk Mitglied Entwicklungsleiter
Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 20. Feb. 2007 22:03 <-- editieren / zitieren --> Unities abgeben: Nur für Robert VBA
|
Robert VBA Mitglied
Beiträge: 11 Registriert: 20.02.2007
|
erstellt am: 20. Feb. 2007 22:06 <-- editieren / zitieren --> Unities abgeben:
|
Nepumuk Mitglied Entwicklungsleiter
Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 20. Feb. 2007 22:09 <-- editieren / zitieren --> Unities abgeben: Nur für Robert VBA
|
Robert VBA Mitglied
Beiträge: 11 Registriert: 20.02.2007
|
erstellt am: 20. Feb. 2007 22:16 <-- editieren / zitieren --> Unities abgeben:
|
Robert VBA Mitglied
Beiträge: 11 Registriert: 20.02.2007
|
erstellt am: 20. Feb. 2007 22:31 <-- editieren / zitieren --> Unities abgeben:
Irgendwie hab ich das Gefühl dass der Befehl "Do" nicht erkannt wird. Er bleibt in roter Schriftfarbe. Ebenso die Zeile, die mit "Loop" beginnt. Habe es versucht über Eigenschaften/Methoden anzeigen und dort ist kein "Do" oder "Loop" vorhanen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Robert VBA Mitglied
Beiträge: 11 Registriert: 20.02.2007
|
erstellt am: 20. Feb. 2007 22:35 <-- editieren / zitieren --> Unities abgeben:
Moment... Hab auch die beide gelöst. Die müssen am Anfang der Zeile stehen. Dann sind die nicht mehr in roter Schriftfarbe, sondern blau. Bleibt noch der Anfang: Wenn ich mit F8 beginnen möchte steht da: "Fehler beim Kompilieren" -> "Suc,Funktion oder Property erwartet" Sagt dir das etwa? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Robert VBA Mitglied
Beiträge: 11 Registriert: 20.02.2007
|
erstellt am: 20. Feb. 2007 22:38 <-- editieren / zitieren --> Unities abgeben:
|
Robert VBA Mitglied
Beiträge: 11 Registriert: 20.02.2007
|
erstellt am: 20. Feb. 2007 22:45 <-- editieren / zitieren --> Unities abgeben:
|