Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Makro wiederholen bis leere Zelle

Makro wiederholen bis leere Zelle
06.08.2017 18:46:29
Sascha
Hallo zusammen,
ich möchte folgendes Makro wiederholen lassen, bis es zu einer leeren Zelle kommt, dann soll es einfach stehen bleiben. Was muss ich anpassen? Besten Dank im Voraus!
Sub CDSS()
' CDSS Makro
' Tastenkombination: Strg+a
Application.Run "'Kopie von CDS_Banks_Markit_1772017_V9 (1).xlsx'!CDS"
ActiveWindow.SmallScroll Down:=-141
ActiveCell.Offset(-146, 1).Range("A1").Select
Application.Run "'Kopie von CDS_Banks_Markit_1772017_V9 (1).xlsx'!CDS"
End Sub

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro wiederholen bis leere Zelle
07.08.2017 07:38:40
fcs
Hallo Sascha,
da nicht bekannt ist (zumindest mir), was das aufgerufene Makro alles so treibt, ist ein effektiver Lösungsvorschlag nicht unbedingt möglich.
Hier mal zwei Varianen.
Gruß
Franz
Sub CDSS()
' CDSS Makro
' Tastenkombination: Strg+a
Do
Application.Run "'Kopie von CDS_Banks_Markit_1772017_V9 (1).xlsx'!CDS"
ActiveWindow.SmallScroll Down:=-141   'diese Zeile sollte überflüssig sein
ActiveCell.Offset(-146, 1).Range("A1").Select
If ActiveCell.Text = "" Then Exit Do
Loop
End Sub
Sub CDSS_Variante()
' CDSS Makro
' Tastenkombination: Strg+a
Dim Zelle As Range
Set Zelle = ActiveCell
'oder Zelle für den Makrostart genau vorgeben
'Set Zelle = Activesheet.RAnge("A5")
Do
Application.Run "'Kopie von CDS_Banks_Markit_1772017_V9 (1).xlsx'!CDS"
Set Zelle = Zelle.Offset(0, 1) 'eine Spalte nach rechts von Startzelle
Zelle.Select
If Zelle.Text = "" Then Exit Do
Loop
End Sub

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Makro wiederholen bis leere Zelle


Schritt-für-Schritt-Anleitung

Um ein Makro in VBA zu erstellen, das bis zu einer leeren Zelle wiederholt wird, kannst Du die folgende Schritt-für-Schritt-Anleitung nutzen:

  1. Öffne den Visual Basic for Applications (VBA) Editor:

    • Drücke Alt + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)".
    • Wähle "Einfügen" > "Modul".
  3. Kopiere den folgenden Code in das Modul:

    Sub CDSS()
       ' CDSS Makro
       ' Tastenkombination: Strg+a
       Dim Zelle As Range
       Set Zelle = ActiveCell
       Do
           Application.Run "'Kopie von CDS_Banks_Markit_1772017_V9 (1).xlsx'!CDS"
           Set Zelle = Zelle.Offset(0, 1) 'eine Spalte nach rechts von Startzelle
           Zelle.Select
           If Zelle.Text = "" Then Exit Do
       Loop
    End Sub
  4. Schließe den VBA-Editor:

    • Drücke Alt + Q, um zurück zu Excel zu gelangen.
  5. Weise eine Excel-Tastenkombination zu:

    • Gehe zu Entwicklertools > Makros, wähle Dein Makro aus und klicke auf "Optionen", um eine Excel-Tastenkombination zuzuweisen.

Häufige Fehler und Lösungen

  • Problem: Makro führt nicht aus, wenn die Zelle leer ist.

    • Lösung: Stelle sicher, dass die Bedingung If Zelle.Text = "" Then Exit Do korrekt platziert ist.
  • Problem: Das Makro scrollt unnötig.

    • Lösung: Entferne die Zeile ActiveWindow.SmallScroll Down:=-141, wenn sie nicht benötigt wird.

Alternative Methoden

Eine alternative Methode, um einen Vorgang in Excel zu wiederholen, ist die Verwendung von Excel-Shortcuts:

  • Excel Shortcut Wiederholen: Du kannst Strg + Y verwenden, um den letzten Vorgang zu wiederholen, wenn Du einfache Formatierungen oder Eingaben machst.

  • VBA Schleife bis leere Zelle: Eine andere Möglichkeit ist, die Schleife in einem benutzerdefinierten Funktionsmodul zu implementieren, um mehr Kontrolle über den Vorgang zu haben.


Praktische Beispiele

Hier ist ein praktisches Beispiel, wie Du das Makro nutzen kannst:

  • Anwendung: Angenommen, Du hast eine Liste in Spalte A, die alle zwei Zellen Daten enthält. Das Makro wird die Daten in die angrenzenden Zellen in Spalte B kopieren, bis eine leere Zelle in Spalte A erreicht wird.
Sub DatenKopieren()
    Dim Zelle As Range
    Set Zelle = Range("A1")
    Do
        Zelle.Offset(0, 1).Value = Zelle.Value 'Daten in Spalte B kopieren
        Set Zelle = Zelle.Offset(1, 0) 'nächste Zeile
    Loop Until Zelle.Text = ""
End Sub

Tipps für Profis

  • Verwende Option Explicit: Füge Option Explicit am Anfang Deines Moduls hinzu, um sicherzustellen, dass alle Variablen deklariert werden. Dies hilft, Fehler zu vermeiden.

  • Debugging: Nutze Debug.Print innerhalb Deiner Schleifen, um den Inhalt der Zellen zu überprüfen.

  • Vorgang wiederholen Excel: Experimentiere mit verschiedenen Schleifenarten (For, While), um herauszufinden, welche am besten für Deine Anforderungen geeignet ist.


FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um mehrere Spalten zu durchlaufen?
Du kannst die Offset-Methode anpassen, um mehrere Spalten gleichzeitig zu überspringen, indem Du die Offset-Parameter entsprechend erhöhst.

2. Was mache ich, wenn ich eine Fehlermeldung erhalte?
Überprüfe den Code auf Syntaxfehler und stelle sicher, dass alle referenzierten Zellen und Arbeitsblätter korrekt sind.

3. Kann ich das Makro automatisieren, sodass es bei jeder Änderung in der Tabelle ausgelöst wird?
Ja, Du kannst das Makro in das Worksheet-Change-Ereignis einfügen, um es automatisch auszuführen, wenn Änderungen an der Tabelle vorgenommen werden.

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