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

Forumthread: Makro pro Zeile ausführen

Makro pro Zeile ausführen
Stefan
Hallo,
habe eine Excel-Datei mit Tabelle1 und Tabelle2.
in Tabelle 1 sind verschiedene Kundenangaben (Spalte A bis K)
Datum Garantieende (Spalte i)
Datum ab dem der Kunde angeschrieben werden soll (Spalte L)
in die Spalte M kommt kommt automatisch ein "x" wenn die Maschine 40Tage(oder weniger) vor Garantieende ist und in Spalte N noch kein "x" ist.
in Tabelle 2 ist ein Anschreiben an den kunden.
Hier das Problem:
brauche ein Makro, welches in tabelle 1 jede einzelne Zeile überprüft ob in der Spalte M ein "x" ist.
Wenn nein weiter mit nächster Zeile, wenn ja:
Kopieren verschiedener Zellen dieser Spalte (A,C,D,E,F,G,H,I) in Zellen der Tabelle 2, dann ausdrucken der Tabelle2, dann setzen von "x" in Spalte N dieser Zeile (Tabelle1) und dann weiter mit nächster zeile.
Nachdem alle zeilen durch sind MsgBox mit text " Alle maschinen überprüft"
und schließen der Datei.
Anbei eine Bsp.Tabelle
https://www.herber.de/bbs/user/77074.xls
Wäre super, wenn mir jemand helfen könnte.
Gruß
Stefan
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Makro pro Zeile ausführen
18.10.2011 16:17:52
Rudi
Hallo,

Sub prcAnschreiben()
Dim LRow As Long, wksListe As Worksheet, wksAnschr As Worksheet
Set wksListe = Worksheets("Liste")
Set wksAnschr = Worksheets("Anschreiben")
With wksListe
For LRow = 4 To .Cells(Rows.Count, 1).End(xlUp).Row
If .Cells(LRow, 13) = "x" Then
wksAnschr.Cells(4, 1) = .Cells(LRow, 4)
wksAnschr.Cells(15, 1) = .Cells(LRow, 5)
wksAnschr.Cells(17, 1) = .Cells(LRow, 6)
wksAnschr.Cells(19, 1) = .Cells(LRow, 7)
wksAnschr.Cells(19, 7) = Date
wksAnschr.Cells(26, 3) = .Cells(LRow, 3)
wksAnschr.Cells(27, 3) = .Cells(LRow, 1)
wksAnschr.Cells(28, 3) = .Cells(LRow, 8)
wksAnschr.Cells(29, 3) = .Cells(LRow, 9)
wksAnschr.PrintOut
.Cells(LRow, 14) = "x"
End If
Next LRow
End With
MsgBox " Alle Maschinen überprüft"
ThisWorkbook.Close True
End Sub

Gruß
Rudi
Anzeige
AW: Makro pro Zeile ausführen
21.10.2011 10:03:57
Stefan
super,
funktioniert so wie ich es mir vorgestellt habe.
Danke !!!
;
Anzeige

Infobox / Tutorial

Makro für die automatisierte Verarbeitung von Excel-Zeilen


Schritt-für-Schritt-Anleitung

  1. Öffne die Excel-Datei: Stelle sicher, dass du die Datei mit Tabelle1 (mit den Kundenangaben) und Tabelle2 (mit dem Anschreiben) geöffnet hast.

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

  3. Neues Modul erstellen: Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei.xls)“, wähle „Einfügen“ und dann „Modul“.

  4. Makro einfügen: Kopiere den folgenden VBA-Code in das Modul:

    Sub prcAnschreiben()
        Dim LRow As Long, wksListe As Worksheet, wksAnschr As Worksheet
        Set wksListe = Worksheets("Tabelle1")
        Set wksAnschr = Worksheets("Tabelle2")
    
        With wksListe
            For LRow = 4 To .Cells(Rows.Count, 1).End(xlUp).Row
                If .Cells(LRow, 13) = "x" Then
                    wksAnschr.Cells(4, 1) = .Cells(LRow, 4)
                    wksAnschr.Cells(15, 1) = .Cells(LRow, 5)
                    wksAnschr.Cells(17, 1) = .Cells(LRow, 6)
                    wksAnschr.Cells(19, 1) = .Cells(LRow, 7)
                    wksAnschr.Cells(19, 7) = Date
                    wksAnschr.Cells(26, 3) = .Cells(LRow, 3)
                    wksAnschr.Cells(27, 3) = .Cells(LRow, 1)
                    wksAnschr.Cells(28, 3) = .Cells(LRow, 8)
                    wksAnschr.Cells(29, 3) = .Cells(LRow, 9)
                    wksAnschr.PrintOut
                    .Cells(LRow, 14) = "x"
                End If
            Next LRow
        End With
    
        MsgBox "Alle Maschinen überprüft"
        ThisWorkbook.Close True
    End Sub
  5. Makro ausführen: Schließe den VBA-Editor und gehe zurück zu Excel. Drücke ALT + F8, wähle prcAnschreiben aus und klicke auf „Ausführen“.


Häufige Fehler und Lösungen

  • Fehler: Makro läuft nicht: Überprüfe, ob die Tabellennamen korrekt sind (Tabelle1 und Tabelle2).

  • Fehler: Excel stürzt ab: Stelle sicher, dass dein Computer genügend Ressourcen hat, um das Makro auszuführen. Schließe unnötige Anwendungen.

  • Fehler: "x" wird nicht gesetzt: Überprüfe die Bedingung in der If-Anweisung, ob sie korrekt auf Spalte M verweist.


Alternative Methoden

Falls du keine Makros verwenden möchtest, kannst du auch mit bedingten Formatierungen und Filterfunktionen in Excel arbeiten. Diese Methode ist jedoch weniger automatisiert und erfordert manuelle Eingriffe.

  1. Bedingte Formatierung: Setze eine Regel, die Zellen in Spalte M hervorhebt, wenn sie „x“ enthalten.
  2. Filter verwenden: Filtere die Daten in Tabelle1 nach Spalte M, um nur die relevanten Zeilen anzuzeigen.

Praktische Beispiele

Ein Beispiel für den Einsatz des Makros könnte wie folgt aussehen:

  • Du hast in Tabelle1 100 Kundenangaben.
  • In Spalte M sind 10 "x" gesetzt.
  • Das Makro kopiert die Daten dieser 10 Zeilen nach Tabelle2 und druckt das Anschreiben automatisch aus.

Tipps für Profis

  • Optimierung des Makros: Du kannst das Makro anpassen, um zusätzliche Informationen oder Formate hinzuzufügen.
  • Debugging: Nutze Debug.Print im Code, um den Fortschritt des Makros in der Konsole zu verfolgen.
  • Speichern unter: Stelle sicher, dass du deine Arbeitsmappe als Makro-fähige Datei speicherst (.xlsm), um das Makro zu behalten.

FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen?
Du kannst die Zellenreferenzen im VBA-Code ändern, um andere Daten zu kopieren oder zu drucken.

2. Welche Excel-Version benötige ich?
Das Makro sollte in den meisten Excel-Versionen ab 2007 funktionieren. Achte darauf, dass die Makros aktiviert sind.

3. Wie finde ich heraus, ob das Makro erfolgreich war?
Das Makro zeigt eine Meldung an, wenn alle Maschinen überprüft wurden. Außerdem werden die "x"-Werte in Spalte N gesetzt.

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