Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Ein Makro für alle Zeilen automatisch ausführen

Ein Makro für alle Zeilen automatisch ausführen
10.09.2007 16:27:04
Ingo
Hallo
Gibt es eine Möglichkeit, ein bestimmtes selbst erstelltes Makro für alle Zeilen einer Tabelle automatisch ausführen zu lassen?
Ich habe eine Excel-Tabelle mit z.B. 1000 Zeilen.
Und ich habe ein Makro, welches immer aus der gerade aktiven Zeile bestimmte Zellenwerte nimmt und diese in eine Textdatei schreibt.
Für jede Zeile wird eine eigene textdatei erstellt (Der Dateiname wird auch aus einem jeweiligen Zelleninhalt zusammengebaut)
Bisher aktiviere ich jede Zeile per Hand und führe dann immer das Makro aus, um meine gewünschten Textdateien zu erhalten.
Nun würde ich gerne, dass Excel im Grunde von alleine die erste Zeile nimmt (wenn ein Inhalt in Zelle 2 ist) und das Makro ausführt (und somit die zur Zeile gehörige Textdatei schreibt).
Dann soll er zur nächsten Zeile springen und dort wieder das Makro ausführen.
U.s.w.
Das soll dann soweit gemacht werden, bis zum ersten mal eine Zeile kommt, die in Zelle 2 keinen Wert mehr hat.
Dazu müsste ich doch irgendwie ne Art Schleife in ein Makro schreiben, oder?
Gruß
Ingo

Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ein Makro für alle Zeilen automatisch ausführe
10.09.2007 16:35:36
Renee
Hi Ingo,
Zeig mal den Code von Deinem Makro.
GreetZ Renee

AW: Ein Makro für alle Zeilen automatisch ausführe
10.09.2007 16:42:00
Ingo
Hallo Renee
Ich bin nun nicht ganz sicher, ob ich richtig verstanden wurde.
Dieses Makro, welches ich bisher immer von Hand für bestimmte Zeilen ausführe, will ich auch in Zukunft noch so ausführen können (also einzeln für bestimmte Zeilen meiner Tabelle).
Nur manchmal soll es halt für alle Zeilen der Tabelle (über 1000) ausgeführt werden.
Und das möchte ich eben automatisieren.
Das Makro selber ist nur ein einfaches, welches aus bestimmten Zellen der gerade aktiven Zeile Werte entnimmt und diese in eine Textdatei schreibt.
Mittels: Print #iFile, "Blala: " & Cells(iRow, 3) & " - trallalla"
Reicht Dir das soweit an Infos?
Gruß
Ingo

Anzeige
AW: Ein Makro für alle Zeilen automatisch ausführe
10.09.2007 16:53:53
Renee
Hi Ingo,

For ix = 1 to 1000
Call DeinMakro
next ix


Renee

AW: Ein Makro für alle Zeilen automatisch ausführe
10.09.2007 16:55:50
Ingo
Hallo nochmal
Ich versuche, mein Anliegen nochmal anders auszudrücken.
Dieses Makro, welches da die Zellenwerte in Textdateien schreibt heist z.B. MKdruck.
Nun soll ein weiteres Makro folgendes sinngemäß machen:
For Zeile2 to Zeile[letze Zeile der Tabelle mit Inhalt in Zelle 2]
--Ausführen von MKdruck
Next
Klar, der Code ist natürlich Unsinn, aber vielleicht verdeutlicht das mein Anliegen :-)
Gruß
Ingo

Anzeige
AW: Ein Makro für alle Zeilen automatisch ausführe
10.09.2007 17:09:00
Renee
Hi Ingo,
Ich versuch es nochmal, dieser Code in das Klassemodul der Tabelle:

Sub IchWillMeinenCodeNichtOffenLegen()
Dim lX As Long
For lX = 2 To ActiveSheet.Range("B" & ActiveSheet.Rows.Count).End(xlUp).Row
MKDruck
Next lX
End Sub


Vermutlich macht Dein Code dann Unsinn, weil er nicht weiss wo was ist ...
Greetz Renee

Anzeige
AW: Ein Makro für alle Zeilen automatisch ausführe
10.09.2007 18:55:00
Ingo
Hallo nochmal
> IchWillMeinenCodeNichtOffenLegen :-))
Doch doch, kein Problem.
Ich hatte nur gedacht, dass wir uns vielleicht nur falsch verstanden hatten.
Hier mal der Code, der diese Textdateien schreibt:

Sub Neuer_Artikel()
Dim iT As Integer
Dim iFile As Integer
Dim iRow As Long
Dim iAnz As Integer
Dim i As Integer
Dim petFile As String
neuerArtikel.Show
If bolAbbruch Then Exit Sub
iFile = FreeFile
iRow = ActiveCell.Row
petFile = LCase(Cells(iRow, 2)) & ".shtml"
Open "D:\SPACEart\Bilder-Rename\" & petFile For Output As iFile
Print #iFile, "Blabla: " & Cells(iRow, 18) & " blabla"
Close iFile
End Sub


Ich habe mal alle Print-Zeilen entfernt bis auf eine, weil da sehr viele HTML-Tags enthalten sind, die sich hier im Forum nicht posten lassen (ohne alles zu maskieren).
Wenn ich nun Dein Makro folgendermaßen anwende:


Sub Test()
Dim lX As Long
For lX = 2 To 10
Neuer_Artikel
Next lX
End Sub


... wird mein Makro (Neuer_Artikel) zwar 8 mal ausgeführt, aber immer in der gleichen Zeile meiner Tabelle.
Was mache ich falsch?
Bin leider überfordert.
Gruß
Ingo

Anzeige
nochmal anders formuliert
10.09.2007 19:50:11
Ingo
Hehe ich schon wieder :-)
Es fällt mir etwas schwer, für mein Anliegen die richtigen Worte zu finden.
So dass man da eben auch durchsteigt :-)
Hier ein neuer Versuch:
Ich habe eine Excel-Tabelle mit z.B. 500 Zeilen.
Und ich habe ein Makro zB. "MKdruck"
Nun möchte ich gerne ein Marko machen, welches folgendes macht:
1.) Die erste Zeile meiner Tabelle aktivieren (so, wie wenn man mit der Maus auf die Zelle der Spalte B dieser Zeile klicken würde.)
2.) Das Makro "MKdruck" ausführen.
3.) Die zweite Zeile meiner tabelle aktivieren (so, wie wenn man mit der Maus auf die Zelle der Spalte B dieser Zeile klicken würde.)
4.) Wieder das Makro "MKdruck" ausführen.
u.s.w.
Das soll dan so lange weitergehen, bis die erste Zeile auftaucht, die in Spalte B keinen Wert mehr hat.
Dabei müsste es doch ziemlich egal sein, as dieses "MKdruck" überhaupt macht, oder?
da ich selber leider nur sehr bescheidene VBA-kenntnisse habe, würde ich mich riesig freuen, wenn Ihr mir dabei behilflich sein könntet
Gruß aus Münter
Ingo

Anzeige
AW: nochmal anders formuliert
10.09.2007 21:12:16
Renee
Hi Ingo,
Genau darum wollte ich von Anfang den Code sehen.
Soll den z.B. wirklich für 1000 Zeilen 1000 mal Deine Userform neuerArtikel aufgerufen werden ? Wohl kaum oder?
Dein Makro könnte so aussehen (ohne auf Dein bestehendes zuzugreifen).
Makro in ein Modul. Ggf. die erste Zeile mit dem richtigen Blattnamen anpassen.

Sub SoTutsVielleicht()
Const sTabelle = "Tabelle1"
Dim lX As Long
Dim iFile As Integer
Dim petFile As String
For lX = 2 To Sheets(sTabelle).Range("B" & Sheets(sTabelle).Rows.Count).End(xlUp).Row
petFile = LCase(Sheets(sTabelle).Cells(lX, 2)) & ".shtml"
Open "D:\SPACEart\Bilder-Rename\" & petFile For Output As iFile
Print #iFile, "Blabla: " & Sheets(sTabelle).Cells(lX, 18) & " blabla"
Close iFile
Next lX
End Sub


Das was Du wolltest, hätte ein endloses Geflacker und in der Tabelle Rumgehopse gegeben!
Greetz Renee

Anzeige
AW: nochmal anders formuliert
10.09.2007 23:02:59
Ingo
Hallo nochmal
Das klappt auch noch nicht so ganz ... sorry.
Ich habe hier mel mein komplettes Makro "Neuer_Artikel" hochgeladen:
https://spaceart.de/Sonstiges/Temp-Pics/Makro.txt
(weil ich nicht genau weis, wie ich hier den Code mit HTML-Tags posten kann)
Also dieses ganze Ding soll halt für alle Zeilen meiner Tabelle ausgeführt werden.
Aber ich brauche auch weiterhin noch die Möglichkeit, es einzeln auszuführen.
Wenn Du immer noch Lust hast, mir zu helfen, freue ich mich natürlich :-)
Gruß
Ingo

Anzeige
AW: nochmal anders formuliert
11.09.2007 07:34:00
Ingo
Hallo
Habs nun doch hinbekommen.
Gruß
Ingo

AW: nochmal anders formuliert
11.09.2007 09:18:09
Renee
Hi Ingo,
Ist ja super... selbst ist der Mann!
Übrigens kann Du hier so Source-Text einfügen:

Den Text makieren und anschliessend dies  Tags einfügen 


Userbild
Greetz Renee

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Makro für automatische Ausführung in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne die Excel-Datei, in der das Makro ausgeführt werden soll.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul hinzu:

    • Rechtsklick auf „VBAProject (DeineDatei.xlsx)“ > Einfügen > Modul.
  4. Kopiere folgenden Code in das Modul:

    Sub AutomatischesMakro()
       Dim lX As Long
       For lX = 2 To ActiveSheet.Range("B" & ActiveSheet.Rows.Count).End(xlUp).Row
           ' Rufe dein bestehendes Makro hier auf
           MKDruck
       Next lX
    End Sub
  5. Schließe den VBA-Editor und kehre zu Excel zurück.

  6. Führe das Makro aus:

    • Drücke ALT + F8, wähle „AutomatischesMakro“ und klicke auf „Ausführen“.

Häufige Fehler und Lösungen

  • Problem: Das Makro wird für jede Zeile nicht korrekt ausgeführt.

    • Lösung: Stelle sicher, dass dein bestehendes Makro die korrekten Zellenwerte aus der aktiven Zeile nutzt. Du kannst ActiveCell.Row verwenden, um die aktuelle Zeile zu referenzieren.
  • Problem: Der Dateiname wird nicht korrekt generiert.

    • Lösung: Überprüfe die Logik, die den Dateinamen basierend auf den Zelleninhalten erstellt. Achte darauf, dass die Zelle, die den Namen enthält, tatsächlich Werte hat.

Alternative Methoden

Falls du eine andere Methode zur Ausführung von Makros in Excel suchst, kannst du auch die folgenden Ansätze in Betracht ziehen:

  • Formeln und Funktionen: Falls dein Ziel auch ohne Makros erreicht werden kann, überprüfe, ob die Verwendung von Formeln für deinen Anwendungsfall ausreicht.
  • Excel-Add-Ins: Über den Microsoft Store kannst du nach Add-Ins suchen, die möglicherweise ähnliche Funktionen bieten.

Praktische Beispiele

Hier ist ein Beispiel für ein einfaches Makro, das die Werte aus Spalte B in Textdateien schreibt:

Sub Neuer_Artikel()
    Dim iFile As Integer
    Dim iRow As Long
    Dim petFile As String
    iRow = ActiveCell.Row
    petFile = LCase(Cells(iRow, 2)) & ".txt"
    iFile = FreeFile
    Open "D:\DeinPfad\" & petFile For Output As iFile
    Print #iFile, "Inhalt: " & Cells(iRow, 3) ' Beispielinhalt
    Close iFile
End Sub

Du kannst dieses Makro in Kombination mit dem Automatisierungs-Makro verwenden, um für jede Zeile eine Textdatei zu erstellen.


Tipps für Profis

  • Fehlerbehandlung: Füge Fehlerbehandlungsroutinen hinzu, um unerwartete Probleme beim Ausführen des Makros zu vermeiden.

    On Error Resume Next
    ' Dein Code hier
    On Error GoTo 0
  • Makros speichern: Speichere deine Excel-Datei als .xlsm, um die Makros zu erhalten.

  • Verwende Debug.Print: Nutze Debug.Print, um Variablenwerte während der Ausführung im Direktfenster anzuzeigen. Dies hilft beim Debuggen.


FAQ: Häufige Fragen

1. Wie kann ich das Makro für einen bestimmten Bereich ausführen? Du kannst die Schleife im Makro anpassen, indem du die Start- und Endzeilen festlegst, z.B. For lX = 2 To 20.

2. Was mache ich, wenn das Makro nicht ausgeführt wird? Überprüfe die Makrosicherheitseinstellungen in Excel. Gehe zu „Datei“ > „Optionen“ > „Trust Center“ > „Einstellungen für das Trust Center“ und aktiviere die Ausführung von Makros.

3. Kann ich das Makro anpassen? Ja, du kannst das Makro jederzeit anpassen, um es an deine spezifischen Anforderungen anzupassen. Achte darauf, dass die Logik für die Zellreferenzen korrekt bleibt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige