Autor
|
Thema: Excel Macro - Zellen einfärben (1258 mal gelesen)
|
Nikta Mitglied
Beiträge: 7 Registriert: 16.06.2015
|
erstellt am: 16. Jun. 2015 15:45 <-- editieren / zitieren --> Unities abgeben:
Hallo an alle! Ich hoffe mir kann hier einer weiterhelfen. Ich habe eine Tabelle, die bereits mit einem Macro gefiltert wird. Nun möchte ich (nach dem der Filter angewandt wurde), dass jeweils 10 Linien (Spalten B bis L) eingefärbt werden, immer abwechselnd. Die Einfärbung sollte immer in 10-ner Schritten erfolgen, egal wie lange die Tabelle sein wird. Könnte mir jemand helfen einen Macro Code dafür zu generieren? Vielen lieben Dank im Voraus! [Diese Nachricht wurde von Nikta am 16. Jun. 2015 editiert.]
[Diese Nachricht wurde von Nikta am 19. Jun. 2015 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: 16. Jun. 2015 17:10 <-- editieren / zitieren --> Unities abgeben: Nur für Nikta
|
Nikta Mitglied
Beiträge: 7 Registriert: 16.06.2015
|
erstellt am: 17. Jun. 2015 10:31 <-- editieren / zitieren --> Unities abgeben:
|
Nikta Mitglied
Beiträge: 7 Registriert: 16.06.2015
|
erstellt am: 19. Jun. 2015 15:20 <-- editieren / zitieren --> Unities abgeben:
Hallo! Nun habe ich doch noch ein Problem mit dem Makro, und zwar: Ich habe eine Excel Datei mit mehreren Sheets, zwei davon haben ein Makro, das jeweils mit „Private Sub Worksheet_Activate()“ beginnt. Wenn ich die Excel Datei öffne, passiert nichts, ich muss erst auf die jeweiligen Sheets klicken und erst dann wird Makro ausgeführt. Gibt es eine Möglichkeit die Makros beim Öffnen auszuführen? Genauer gesagt soll zuerst das Marco ausgeführt werden, das sich im Sheet3 befindet und danach sofort das aus dem Sheet7. Vielen Dank. LG, Nikta
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: 19. Jun. 2015 17:39 <-- editieren / zitieren --> Unities abgeben: Nur für Nikta
wenn beim Öffen ein Macro ausgeführt werden soll, dann muss es in 'Diese Arbeitsmappe' (This Workbook?) stehen. Private Sub Worksheet_Activate()heisst, wenn Sheet aktiv wird dann führe aus - ergo musste in deiner 'Diese Arbeitsmappe' ein Code drinnen stehen das erst Sheet3 aktiviert, dann Sheet7 aktiviert... aber sinnvoller wäre es die Codes aus Sheet 3 und 7 in ein Modul zu packen und das Modul aufrufen... ... but, was ich anhand der Markoaufzeichungen sehen, ist wohl Ersteres leichter ;=) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nikta Mitglied
Beiträge: 7 Registriert: 16.06.2015
|
erstellt am: 22. Jun. 2015 15:09 <-- editieren / zitieren --> Unities abgeben:
Ja, habe leider überhaupt keine Ahnung von VBA. Habe alle Makros mit Hilfe von Google erstellt. Habe den Code "Call Sheets" in "Diese Arbeitsmappe" eingefügt, bekomme aber eine Fehlermeldung "Run-time error 9: Subscipt out of range". Was mache ich falsch? Sorry, falls ich mit meinen Fragen nerve. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 22. Jun. 2015 15:43 <-- editieren / zitieren --> Unities abgeben: Nur für Nikta
Hallo, Der Fehler kommt weil Du den Namen der Tabelle geändert hast und jetzt ein nicht definiertes Blatt aufrufst. Es gibt zwei Varianten wie Du den Code aufrufen kannst: Über den Modulnamen (in den Eigenschaften unter (Name) angegeben: Call Sheet4.Worksheet_Activate Call Sheet7.Worksheet_Activate oder über den (angezeigten) Namen des Worksheet (in den Eigenschaften unter Name angezeigt): Call Sheets("Posting Summary").Worksheet_Activate Call Sheets("MJE").Worksheet_Activate Grüße Klaus
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nikta Mitglied
Beiträge: 7 Registriert: 16.06.2015
|
erstellt am: 22. Jun. 2015 16:17 <-- editieren / zitieren --> Unities abgeben:
Hallo Klaus, Danke, die zweite Variante habe ich auch schon ausprobiert. Funktioniert nicht:"Object doesn't support this property or method" In der Datei habe ich keine Module (siehe screenshot). Ach, wieso muss es so kompliziert sein?! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 22. Jun. 2015 17:24 <-- editieren / zitieren --> Unities abgeben: Nur für Nikta
Hi, na gut, war falsch ausgedrückt. Nicht Module sondern Excel Objekte. Nachdem wir Deine Tabelle nicht vorliegen haben ist das natürlich schwierig zu analysieren. Gibt es denn in Deinem Excel Objekt Sheet4(Posting Summary) die Sub WorkSheet_Activate ? Dann sollte das auch funktionieren. Am einfachsten sieht man das wenn die Funktion beim Autovervollständigen vorgeschlagen wird. Ist das nicht der Fall stimmt etwas nicht. Welche Excelversion verwendest Du? Evtl. hilft Dir ja dieser oder dieser MS-Artikel weiter. Da gab es mal ein falsches Patch das auch daran schuld sein könnte. Aber bevor Du jetzt wild de-installierst und patcht überprüfen erst einmal Deinen Code. Grüße Klaus [Diese Nachricht wurde von KlaK am 22. Jun. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nikta Mitglied
Beiträge: 7 Registriert: 16.06.2015
|
erstellt am: 23. Jun. 2015 10:01 <-- editieren / zitieren --> Unities abgeben:
Hallo, Meiner Meinung nach stimmt der Code, aber ich kann mich irren. Habe so gut wie keine Ahnung von VBA. Beide Codes in den Sheets 4 und 7 fangen mit „Private Sub Worksheet_Activate()“ an. Ich hänge mal die Excel Datei an. Die Version ist 2010. Gruss
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 23. Jun. 2015 11:39 <-- editieren / zitieren --> Unities abgeben: Nur für Nikta
Hallo, Der Code stimmt fast. Aber durch die Private Deklarierung kann die procedure nicht gefunden werden wenn Du nicht bereits innerhalb des Modules (Excel-Objektes) bist. Damit es trotzdem klappt müßtest Du entweder das Private löschen oder durch Public ersetzen oder beim Workbook_Open den Code ändern Code:
Sub Workbook_Open() Sheet4.Activate Sheet7.Activate
oder Code: Sheets("Posting Summary").Activate Sheets("MJE").Activate
Diese Variante hat auch den Vorteil, dass Deine Select und Pivottabellen richtig zugeordnet werden können. Grüße Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nikta Mitglied
Beiträge: 7 Registriert: 16.06.2015
|
erstellt am: 23. Jun. 2015 13:21 <-- editieren / zitieren --> Unities abgeben:
|