Herbers Excel-Forum - das Archiv

makro ausführen wenn zellen gefüllt sind

Bild

Betrifft: makro ausführen wenn zellen gefüllt sind
von: oli
Geschrieben am: 08.10.2003 16:28:52
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

Bild

Betrifft: mein erster ansatz
von: oli
Geschrieben am: 08.10.2003 17:00:01
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
Bild

Betrifft: AW: Hinweis
von: Hajo_Zi
Geschrieben am: 08.10.2003 17:07:08
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/

Bild

Betrifft: AW: mein erster ansatz
von: börni
Geschrieben am: 08.10.2003 17:08:43
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
Bild

Betrifft: AW: mein erster ansatz
von: ChrisL
Geschrieben am: 08.10.2003 17:09:51
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
Bild

Betrifft: AW: mein erster ansatz
von: ChrisL
Geschrieben am: 08.10.2003 17:12:15
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
Bild

Betrifft: AW: mein erster ansatz
von: oli
Geschrieben am: 08.10.2003 17:22:23
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
Bild

Betrifft: AW: mein erster ansatz
von: ChrisL
Geschrieben am: 08.10.2003 17:29:48
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
Bild

Betrifft: Vielen Dank
von: oli
Geschrieben am: 08.10.2003 17:36:24
Hallo Chris,

ja, das ist toll so. Vielen Dank Dir.

Grüße
oli
Bild

Betrifft: AW: mein erster ansatz
von: Reinhard
Geschrieben am: 08.10.2003 18:53:30
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


 Bild
Excel-Beispiele zum Thema " makro ausführen wenn zellen gefüllt sind"
Makros in Abhängigkeit vom Zellennamen aufrufen Zellen auf Kommentar überprüfen
Spalten bedingt summieren und Zellen formatieren Text aus Textbox in Zellen aufteilen
Zellen vergleichen und markieren Zählen formatierter Zellen
Daten aus Textdatei gezielt in Zellen übernehmen Zellen verbinden und trennen
Zellen bei Minuswerten schraffieren Zeilen oberhalb der markierten Zellen einfügen