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

makro ausführen wenn zellen gefüllt sind

Forumthread: makro ausführen wenn zellen gefüllt sind

makro ausführen wenn zellen gefüllt sind
08.10.2003 16:28:52
oli
Hallo.
Ich habe ein Makro erstellt, dass eine neue Datei mit einer Tabelle erstellt, deren Inhalt aus einer anderen Datei kommt.
Schick wäre es jetzt, wenn das Makro nur ausgeführt wird, wenn die entsprechenden Zellen auch gefüllt sind. Am besten noch mit einer Fehlermeldung nach dem Stil:
"Informationen nicht verfügbar".

Ich komme da mit meinen vba-kenntnissen nicht mehr weiter. Wie mache ich die Abfrage und die Fehlermeldung?

Vielen Dank schonmal, Grüße
oli
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
mein erster ansatz
08.10.2003 17:00:01
oli
also, ich habe inzwischen doch noch was gefunden, dass mich aber nur tlw. weiterbringt.

If Range("'3 Overview'!d10") = "" Then
MsgBox "Erst Zelle Customer füllen"
Else
'mein Makro
End If

Allerdings müssen die Zellen d10, d11 und noch weitere gefüllt sein. Kann ich das irgendwie schachteln?

sollte sich noch jemand erbarmen, vielen dank
Anzeige
AW: Hinweis
08.10.2003 17:07:08
Hajo_Zi
Hallo

durch Deinen zweiten Beitrag ist Dein Beitrag aus der Liste der offenen Beiträge raus, da Du selber ja eine Antwort gegeben hast.

Bitte kein Mail, Probleme sollen im Forum gelöst werden.

Microsoft MVP für Excel

Das Forum lebt auch von den Rückmeldungen.

http://home.media-n.de/ziplies/

Anzeige
AW: mein erster ansatz
08.10.2003 17:08:43
börni
hallo oli,

ich bin zwar selbst kein spezialist, aber ich hätts mal so probiert:


Private Sub test()
If Range("A1").value = "" Then
MsgBox "Der Bereich ist leer!"
Else
DEIN MAKRO
End If
End Sub


das einzige problem dabei ist: range("A1:D5") zb nimmt er nicht an! ich weiß auch nicht wieso!

grüße
börni
Anzeige
AW: mein erster ansatz
08.10.2003 17:09:51
ChrisL
Hi Oli

Anhand deiner Beschreibung kann ich nur raten...

With Worksheets("3 Overview")

If .Range("D10") = "" Or .Range("D11") = "" Or .Range("X1") = "" Then
MsgBox "Erst Zelle Customer füllen"
Exit Sub
Else
'mein Makro
End If

End With

Gruss
Chris
Anzeige
AW: mein erster ansatz
08.10.2003 17:12:15
ChrisL
oder noch ein anderer Ansatz... schau mit der Funktion ISTLEER bzw. CountBlank ob es in einem bestimmten Bereich Leerzellen gibt...

If Application.WorksheetFunction.CountBlank(Worksheets("3 Overview").Range("D10:D14") > 0 Then ...

Gruss
Chris
AW: mein erster ansatz
08.10.2003 17:22:23
oli
Hallo Chris,
vielen Dank.

Vielen Dank auch den Anderen und vor allem auch Hajo, für den Hinweis. Das war mir nicht bewusst.

Chris: Dein Makro gefällt mir prächtig, Problem ist nur, dass am besten immer unterschiedliche Meldungen ausgegeben werden sollten.

Wahrscheinlich bleibt mir dann nur eine Wiederholung der If-Abfrage, oder? (sieht so unelegant aus).

Etwa so:
If Range("'3 Overview'!l9") = "" Then
MsgBox "First fill cell in sheet 3 Overview"
Else
If Range("'1 Coversheet'!d28") = "<>" Then
MsgBox "First fill cell in sheet 1 Coversheet"
Else
If Range("'3 Overview'!c25") = "0,00 T€" Then
MsgBox "First fill sheet 4 Budgeted Costs"
Else
If Range("'3 Overview'!L10") = "01.01.1971" Then
MsgBox "First fill cells in sheet 3 Overview"
Else
If Range("'3 Overview'!L11") = "01.01.1971" Then
MsgBox "First fill cells in sheet 3 Overview"
Else
If Range("'3 Overview'!L10") = "" Then
MsgBox "First fill cells in sheet 3 Overview"
Else
If Range("'3 Overview'!L11") = "" Then
MsgBox "First fill cells in sheet 3 Overview"
Else
If Range("'3 Overview'!d10") = "" Then
MsgBox "First fill cell in sheet 3 Overview"
Else
If Range("'3 Overview'!d11") = "" Then
MsgBox "First fill cell in sheet 3 Overview"
Else

'mein Makro

End If
End If
End If
End If
End If
End If
End If
End If
End If
Anzeige
AW: mein erster ansatz
08.10.2003 17:29:48
ChrisL
Hi Oli

Einzeln ist in dem Fall vermutlich schon am einfachsten. Der Übersichtlichkeit wegen würde ich aber wie folgt:

If Range("'3 Overview'!l9") = "" Then
MsgBox "First fill cell in sheet 3 Overview"
Exit Sub
End If

If Range("'1 Coversheet'!d28") = "<>" Then
MsgBox "First fill cell in sheet 1 Coversheet"
Exit Sub
End If

etc.

Gruss
Chris
Anzeige
Vielen Dank
08.10.2003 17:36:24
oli
Hallo Chris,

ja, das ist toll so. Vielen Dank Dir.

Grüße
oli
AW: mein erster ansatz
08.10.2003 18:53:30
Reinhard
Hi Oli,
ob meins eleganter ist? *hmmh* Ansichtssache, auf jeden Fall kürzer:-)

Sub oli()
arrDat = Array("nix", "3 Overview", "1 Coversheet", "4 BudgetCosts")
arrFehl = Array(1, "L9", "", 1, 2, "D28", "<>", 2, 1, "C25", "0,00 T€", 3, _
1, "L10", "01.01.1971", 1, 1, "L11", "01.01.1971", 1, _
1, "L10", "", 1, 1, "L11", "", 1, 1, "D10", "", 1, 1, "D11", "", 1)
For n = 0 To 8
If Worksheets(arrDat(arrFehl(4 * n))).Range(arrFehl(4 * n + 1)) = arrFehl(4 * n + 2) _
Then MsgBox "first fill cells in " & arrDat(arrFehl(4 * n + 3))
Next n
End Sub

Anzeige
;
Anzeige

Infobox / Tutorial

Makro ausführen, wenn Zellen gefüllt sind


Schritt-für-Schritt-Anleitung

  1. Öffne den 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)“.
    • Wähle „Einfügen“ > „Modul“.
  3. Schreibe den Code:

    • Füge den folgenden Code in das Modul ein:
    Sub MakroAusführenWennGefüllt()
       With Worksheets("3 Overview")
           If .Range("D10").Value = "" Then
               MsgBox "Erst Zelle Customer füllen"
               Exit Sub
           End If
           If .Range("D11").Value = "" Then
               MsgBox "Erst Zelle Projektleiter füllen"
               Exit Sub
           End If
           ' Füge hier weitere Zellenprüfungen hinzu
       End With
       ' Dein Makro
    End Sub
  4. Speichere und teste das Makro:

    • Schließe den VBA-Editor und teste das Makro, indem du es ausführst.

Häufige Fehler und Lösungen

  • Fehler: "Der Bereich ist leer!"

    • Lösung: Stelle sicher, dass die Zellen, die du überprüfst, tatsächlich gefüllt sind. Nutze die If-Bedingungen korrekt.
  • Problem mit mehreren Zellen:

    • Lösung: Verwende Or in einer If-Abfrage, um mehrere Zellen gleichzeitig zu überprüfen, z.B.:
    If .Range("D10") = "" Or .Range("D11") = "" Then
      MsgBox "Bitte füllen Sie die erforderlichen Zellen!"
    End If

Alternative Methoden

  • Verwendung von CountBlank:

    • Statt viele If-Bedingungen zu verwenden, kannst du die Funktion CountBlank verwenden, um zu prüfen, ob es leere Zellen in einem bestimmten Bereich gibt:
    If Application.WorksheetFunction.CountBlank(.Range("D10:D14")) > 0 Then
       MsgBox "Es gibt leere Zellen im Bereich."
    End If
  • Array-Methode:

    • Eine effizientere Methode ist die Verwendung eines Arrays, um die zu überprüfenden Zellen und entsprechenden Fehlermeldungen zu speichern:
    Sub Fehlerüberprüfung()
       Dim arrDat As Variant
       arrDat = Array("3 Overview", "1 Coversheet")
       ' Weitere Logik hier
    End Sub

Praktische Beispiele

  • Ein einfaches Beispiel für die Überprüfung mehrerer Zellen:

    Sub PrüfenUndAusführen()
       If Range("D10").Value = "" Then
           MsgBox "Bitte füllen Sie D10."
       ElseIf Range("D11").Value = "" Then
           MsgBox "Bitte füllen Sie D11."
       Else
           ' Dein Makro hier
       End If
    End Sub
  • Verwendung von Schleifen zur Fehlerprüfung:

    Sub ÜberprüfenMitSchleife()
       Dim Zelle As Range
       For Each Zelle In Worksheets("3 Overview").Range("D10:D14")
           If Zelle.Value = "" Then
               MsgBox "Bitte füllen Sie " & Zelle.Address
           End If
       Next Zelle
    End Sub

Tipps für Profis

  • Nutze Fehlerbehandlung:

    • Implementiere On Error Resume Next, um das Makro robuster zu machen und unerwartete Fehler zu handhaben.
  • Eingabeaufforderungen personalisieren:

    • Gestalte deine Fehlermeldungen spezifischer, um den Benutzern zu helfen, die richtigen Zellen zu finden.
  • Makros testen:

    • Teste deine Makros immer in einer Kopie deiner Datei, um Datenverlust zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Zellen auf einmal überprüfen? Du kannst die CountBlank-Funktion oder ein Array verwenden, um mehrere Zellen effizient zu überprüfen.

2. Was mache ich, wenn mein Makro nicht ausgeführt wird? Überprüfe, ob die Bedingungen in deinen If-Abfragen korrekt sind und ob die Zellen, die du überprüfst, tatsächlich gefüllt sind.

3. Wie kann ich meine Fehlermeldungen benutzerfreundlicher gestalten? Statt allgemeiner Meldungen kannst du spezifische Zellenadressen in den Nachrichten verwenden, um den Benutzern zu helfen, die Probleme schneller zu identifizieren.

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