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

wenn spalten leer dann MsgBox und Abbruch sonst

Forumthread: wenn spalten leer dann MsgBox und Abbruch sonst

wenn spalten leer dann MsgBox und Abbruch sonst
22.02.2015 14:31:24
manega

Ich bin am Verzweifeln, auch stundenlanges googeln hat nicht geholfen.
Nun hoffe nun auf eure Hilfe!
Ich möchte per Makro Zahlenwerte aus einem Tabellenblatt
in ein anderes Tabellenblatt zur weiteren Berechnung übertragen.
Das funktioniert auch super.
Jetzt zum eigentlichen Problem.
Vor dem Übertragen der Zahlenwerte soll geprüft werden, ob im
anderen Tabellenblatt (Liste) bereits Zahlenwetre vorhanden sind.
Falls ja soll eine MsgBox mit einer Meldung geöffnet werden und
das Makro abgebrochen werden. Falls alles leer ist soll ein anderes
Makro mit "Call" aufgerufen werden.
Da in einer der zu überprüfenden Spalten im Blatt "Liste" Formeln vorhanden
sind müsste das Makro so aufgebaut sein, dass es bei der Überprüfung nicht
nach leeren Zellen sucht, sondern nach Zahlen >=1.
Wichtig ist auch, dass die zu überprüfenden Spalten per "select" ausgewählt
werden können, da sich der Bereich ändern kann und daher für die Auswahl der
Spalten ein extra Makro existiert welches über den Befehl "Call" aufgerufen
wird.
Hier das Makro welches ich z.Zt. habe. Die Überprüfung scheitert jedoch an
den Formeln. Außerdem wird das Makro nach dem Erscheinen der MsgBox nicht
beendet.

Sub Einzel_Überprüfen_ob_Liste_leer()
Sheets("Liste").Select
Call Einzel_Tab_Liste_Schränke_Entnahme_Eingang_markieren
For Each Zelle In Selection
If IsEmpty(Zelle) = False Then
MsgBox "Im Arbeitsblatt Liste sind bereits Eintäge vorhanden! Diese zuerst speichern und  _
anschließend den Vorgang wiederholen!"
Exit For
End
Else
End If
Call Einzel_Tabellenfarbe_rot
End Sub
Ich hoffe ihr könnt mir hefen!

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: wenn spalten leer dann MsgBox und Abbruch sonst
26.02.2015 16:45:37
Michael (migre)
Hallo Manega (?!),
wenn Deine Frage schon soviel Text enthält - wär's schwer gewesen am Anfang noch ein "Hallo" und am Ende evtl. eine Grußformel mit Dank hinzuzufügen? Die üblichen Höflichkeitsformeln schaden auch im Forum nicht!
Zu Deiner Frage: Ich würde das nicht über eine Schleife prüfen, aber wenn es Dir nur um Ziffern/Zahlen im zu überprüfenden Bereich geht, kannst Du das bspw. so machen
Sub TabAufZahlenPruefen()
Dim i As Long
'im verwendeten Bereich der Tabelle prüfen
'i = WorksheetFunction.Count(Tabelle1.UsedRange)
'### Oder ###
'im zusammenhängend markierten Bereich auf Zahlen prüfen
'i = WorksheetFunction.Count(ActiveCell.CurrentRegion.Address)
'### Oder ###
'in der aktuellen Auswahl auf Zahlen prüfen
'i = WorksheetFunction.Count(Selection)
If i > 0 Then
MsgBox "Im Arbeitsblatt Liste sind bereits Eintäge vorhanden!"
GoTo Abbruch:
Else: Call XXXXX 'Dein anderes Makro aufrufen, musst Du ergänzen
End If
Abbruch:
End Sub
Im Code verwende ich die "normale" Excel-Zellfunktion "Zählen"; sobald die 1 oder mehr Ziffer/Zahl im jeweiligen Bereich findet, ist Ihr Wert > 0 und dann wird eine Nachricht angezeigt; wenn ihr Wert 0 (oder kleiner... ) ist, wird ein anderes Makro aufgerufen. Beachte dazu auch meine Kommentare direkt im Code
Eine Rückmeldung wäre nett!
Michael

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

Infobox / Tutorial

Überprüfung auf leere Spalten in Excel mit VBA


Schritt-für-Schritt-Anleitung

Um sicherzustellen, dass vor dem Übertragen von Daten in Excel keine leeren Spalten oder bereits vorhandene Werte in einem anderen Tabellenblatt vorhanden sind, kannst du folgendes Makro verwenden. Dieses überprüft, ob in den ausgewählten Spalten Zahlenwerte vorhanden sind. Falls ja, wird eine MsgBox angezeigt und der Prozess abgebrochen.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf „VBAProject (dein Dokument)“ klickst und „Einfügen“ > „Modul“ auswählst.
  3. Kopiere und füge den folgenden Code in das Modul ein:
Sub Einzel_Überprüfen_ob_Liste_leer()
    Sheets("Liste").Select
    Call Einzel_Tab_Liste_Schränke_Entnahme_Eingang_markieren
    For Each Zelle In Selection
        If IsEmpty(Zelle) = False Then
            MsgBox "Im Arbeitsblatt Liste sind bereits Einträge vorhanden! Diese zuerst speichern und anschließend den Vorgang wiederholen!"
            Exit Sub
        End If
    Next Zelle
    Call Einzel_Tabellenfarbe_rot
End Sub
  1. Stelle sicher, dass die Funktion Einzel_Tab_Liste_Schränke_Entnahme_Eingang_markieren und Einzel_Tabellenfarbe_rot existieren, sonst könnte das Makro nicht richtig funktionieren.

Häufige Fehler und Lösungen

  • Problem: MsgBox wird nicht angezeigt und das Makro wird nicht abgebrochen.

    • Lösung: Stelle sicher, dass das Makro bei einem gefüllten Feld korrekt mit Exit Sub abbricht, nicht mit End.
  • Problem: Formeln werden nicht als leer erkannt.

    • Lösung: Verwende IsEmpty nicht direkt, da dies nur für echte leere Zellen funktioniert. Stattdessen kann eine Prüfung auf numerische Werte sinnvoll sein.

Alternative Methoden

Eine alternative Methode zur Überprüfung von leeren Spalten könnte die Verwendung der Excel-Zellfunktion Zählen sein, um die Anzahl der gefüllten Zellen zu ermitteln. Hier ist ein Beispiel:

Sub TabAufZahlenPruefen()
    Dim i As Long
    i = WorksheetFunction.Count(Selection)
    If i > 0 Then
        MsgBox "Im Arbeitsblatt Liste sind bereits Einträge vorhanden!"
        GoTo Abbruch
    Else
        Call DeinAnderesMakro ' Ersetze dies mit deinem spezifischen Makronamen
    End If
Abbruch:
End Sub

Praktische Beispiele

Wenn du ein Makro erstellen möchtest, das leere Zellen in einem bestimmten Bereich überprüft, kannst du den folgenden Code verwenden:

Sub Beispiel_Leere_Zellen()
    Dim rng As Range
    Set rng = Selection ' Definiere den Bereich, den du überprüfen möchtest
    For Each Zelle In rng
        If IsEmpty(Zelle) Then
            MsgBox "Eine Zelle ist leer!"
            Exit Sub
        End If
    Next Zelle
    MsgBox "Alle Zellen sind gefüllt!"
End Sub

Tipps für Profis

  • Nutze die Möglichkeit, das Select-Statement zu vermeiden, um die Effizienz deines Makros zu erhöhen.
  • Verwende Option Explicit am Anfang jedes Moduls, um sicherzustellen, dass alle Variablen deklariert werden. Dies hilft, Fehler zu vermeiden.
  • Berücksichtige die Verwendung von Application.ScreenUpdating = False, um flackernde Bildschirmanzeigen während der Ausführung des Makros zu verhindern.

FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um nur bestimmte Spalten zu überprüfen? Du kannst den Bereich in der Selection-Anweisung anpassen, um nur die gewünschten Spalten auszuwählen. Beispiel: Set rng = Sheets("Liste").Range("A:C").

2. Was passiert, wenn das Makro eine leere Zelle findet? Das Makro zeigt eine MsgBox an und bricht den Vorgang mit Exit Sub ab. Du kannst den Text in der MsgBox anpassen, um spezifische Anweisungen zu geben.

3. Wo finde ich die Makros nach dem Erstellen? Die Makros sind im VBA-Editor unter „Module“ zu finden. Du kannst sie von dort aus ausführen oder ihnen Tastenkombinationen zuweisen.

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