Excel Makro automatisch wiederholen loop schleife

5 Antworten

Wenn es ein Makro sein muss / soll, dann nimm die Lösung von Iamiam. Du solltest vielleicht als Schleifenbedingung noch überprüfen, ob die Zelle gefüllt ist (funktioniert natürlich nur dann zuverlässig, wenn es im Datenblock keine leeren Zellen gibt).

Wenn du nicht auf Makros angewiesen bist, kannst du es auch über die Bedingte Formatierung machen. Markiere die gesamte Tabelle bzw. alle Spalten, deren 10. Zeile gefärbt werden soll, geh dann auf Bedingte Formatierung, Neue Regel, Formel zur Ermittlung.... Als Formel wählst du:

=UND(ZEILE(A1)/10=GANZZAHL(ZEILE(A1)/10);$A1<>"")

Wähl dann noch die gewünschte Formatierung (roter Hintergrund). Jetzt wird jede 10. Zeile, bei der Spalte A nicht leer ist, rot gefärbt.

Soll die 4., 14., 24. usw Zeile gefärbt werden, lautet die Formel in der BF:

=UND((ZEILE(A1)-4)/10=GANZZAHL((ZEILE(A1)-4)/10);$A1<>"")

Sub rotFärbenMitIntervall() 'färbt ActiveCell-Zeile jede 10.Zeile unterhalb rot (.xls-Format)
Dim letzteZ 'unterhalb wirds beendet
Dim Sprung 'hier jede 10 Zeile, die erste betroffene Zeile ist frei wählbar, zB 14, 24, 34...
Dim i 'Laufzahl
i = ActiveCell.Row
letzteZ = Range("A65536").End(xlUp).Row 'in Sp.A muss i'wo weiter unten ein Eintrag sein
Sprung = 10
While i <= letzteZ 'Schleife andere Möglichkeiten: Do...until oder For ... next
Cells(i, 1).EntireRow.Interior.Color = 255 'ist RGB-Zahl für reines rot
i = i + Sprung
Wend

End Sub
Bei mir funktionierts, für xl ab 2007 gilt 1048576 anstatt 65536, muss aber nicht ausgeschöpft werden.

Hayla88 
Fragesteller
 10.10.2014, 02:22

hi danke dir! aber was, wenn ich den makro (wie gesagt durch aufzeichnung) schon habe, aber bloß nur eine wiederholung davon. mit welchem code muss ich den makro konkret ergänzen , damit es nicht nur diese eine aufzeichnung abspielt, sondern diese eine aufzeichnung wiederholt für alle weiteren folgenden zeilen? Dankeschön:)

0
Iamiam  10.10.2014, 11:38
@Hayla88

eine Aufzeichnung schreibt alles fest, also auch die Zielzelle(n). Das kannst du nur wieder dynamisieren, indem Du Funktionen dafür einführst:
im Klartext: es geht so nicht!

Du brauchst eine Schleife zum Wiederholen, und diese Schleife muss durch die Parameter:
Erste betroffene Zelle (bei Dir fix, bei mir Activecell.row, Du könntest also schreiben Range("fix-Adresse").row, aber das bringt Dir ja nichts.

Du musst zum Wiederholen festlegen, bis wie weit: Du kannst natürlich letzteZ auch definieren durch z.B.57 als Zeilennummer oder 365 und die Zahl statt des Parameters eintragen.

Die Farbe ist ohnehin an Ort und Stelle definiert (vllt hat Dir die Aufzeichnung einen anderen Wert als reines rot geliefert, xl ist da sehr willkürlich=werbewirksam bzw Konkurrentenschädlich programmiert)

Den Sprung hab ich ja sogar manuell eingegeben, kannst natürlich auch i = i + 10 schreiben
- Du wirst das später allerdings bei verblasster Erinnerung nur noch schwer herauslesen können, was da was war.

Gewöhne Dich daran, die Aufzeichnungen auf variabel umzuschreiben, sonst nützt dir VBA gar nichts!

1
Iamiam  11.10.2014, 11:54
@Iamiam

Die Aufzeichnung ist gut, um die Bezeichnung der Parameter herauszufinden (sie hält ja da ALLES fest, auch das, worauf es Dir gar nicht ankommt),

Anweisungen wie Range("Adresse").OFFSET(Zeile, Spalte) oder
oder DO LOOP...UNTIL , FOR...NEXT oder
Funktionen wie if ... then... , Select Case, Find, Instr(...)
können dagegen nicht wiedergegeben werden.
Derartige Bedingungen spielen sich ja im Kopf des Anwenders ab, und da kann xl gottseidank (noch?) nicht reinschauen!

0

hallo freunde, lieben dankf für die antworten! also ist die antwort, dass es keine "weitermach formel" für aufgezeichnete makros gibt, verstanden.

trotzdem danke, mehr brauche ich nicht an dieser stelle.

Ohne deinen Aufgezeichnet Code zu sehen keine Chance. Mit Aufzeichen ist es in VBA nicht getan.

Das ist wie wenn du aus dem Radio auf eine Kasette aufnimmst, jetzt aber sagst du willst, dass auf der Kasette das Lied bis zum Ende der Laufzeit des Bandes wiederholt wird. Zusätzlich soll das Lied nicht mehr von Elton John sondern von Queen gesungen werden.

Du musst lernen den Code anzupassen dann kannst du auch das gewünschte erreichen. Aber stell erst mal deinen Aufgezeichneten Code hier rein.

Eine Wiederholfunktion für aufgezeichneten Code ist nicht realisierbar.

ich kenne mich zwar nicht mit makros aus aber wie wäres mit nem einfachen loop wie diesen:

var trys
for trys <= 100; trys++:
    collom.(trys).fillcolor('red')

da ich keine ahnung von befehlen in makros habe ist das das einziege was ich mir vorstellen kann.

Hayla88 
Fragesteller
 10.10.2014, 00:42

hi danke! aber gibt es auch einen allgemeingültigen code mit dem ich das automatische weitermachen aktivieren kann? also ein fertiger standard code, den ich irgendwo in meinem aufgezeichneten makro einfügen kann, völlig unabhängig davon was meine operation darstellt, der makro soll einfach bis zum ende durchlafen?

Lieben Dank

0