Herbers Excel-Forum - das Archiv
makro ausführen wenn zellen gefüllt sind

|
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
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
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/
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
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
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
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
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
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
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