Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
932to936
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
932to936
932to936
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makroausführung an Bedingung knüpfen

Makroausführung an Bedingung knüpfen
19.12.2007 08:44:43
Maik
Guten Morgen zusammen,
ich grübel seit gestern über folgendes Problem nach:
Ich habe für eine vorgegebene Liste ein Makro erstellt, mit dessen Hilfe sich diese ständig ändernde Liste neu sortieren lässt. Da ich mit VBA aber noch am Anfang stehe, kommt es beim Ausführen des Makro zu einer Fehlermeldung, wenn keine Daten zum sortieren vorhanden sind (was ja auch logisch ist). Daraufhin habe ich eine Abfrage eingebaut, die prüft, ob Daten vorhanden sind und ansonsten eine MsgBox erscheint mit dem Hinweis, das eben keine Daten vorhanden sind.
Allerdings bezieht sich meine Prüfung nur auf eine Zelle, ist nur diese nicht gefüllt, die restlichen aber schon, sortiert das Makro nicht. Ich bräuchte also die Prüfung über mehrere Zellen bzw. Bereiche, doch da hört es bei mir auf.
Die zu prüfenden Bereiche im jeweiligen Tabellenblatt wären B4:B53; G4:G53; B58:B107; G58:G107
Mein Makro beginnt folgendermaßen:
Sub Sortieren()
'
' Sortieren Makro
'
Application.ScreenUpdating = False
If Cells(3, 5) = "" Then
MsgBox "Es sind keine Daten vorhanden die sortiert werden könnten !"
Else
Für eure Hilfe im voraus schon mal vielen Dank :-)
Gruß
Maik

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

Betreff
Datum
Anwender
Anzeige
AW: Makroausführung an Bedingung knüpfen
19.12.2007 08:59:45
Mag
Hi,
Ansatz (?):

Option Explicit
Sub fff()
Dim rng As Range
For Each rng In Sheets(1).Range("B4:B53,G4:G53,B58:B107,G58:G107")
If rng.Value  "" Then MsgBox "In z.B. Zelle: """ & rng.Address & _
""" steht etwas drin !": Exit For
Next
End Sub


Gruss

AW: Makroausführung an Bedingung knüpfen
19.12.2007 10:20:17
Maik
Hallo Mag,
dieser Ansatz geht in die falsche Richtung. Jetzt wird ja geprüft ob Daten vorhanden sind und der Erfolg wird entsprechend mit einer MsgBox kund getan. Sind aber alle vier angegebenen Bereiche leer - also ohne Daten - fängt mein Makro an zu abreiten und wirft dann beim sortieren wieder die Fehlermeldung raus, dass keine Daten vorhanden sind.
Ich hätte nun aber gerne eine Abfrage vor das Makro gestellt, welches prüft, ob in diesen vier Bereichen Daten drin stehen (egal wo und egal wieviele) und sollten alle Felder leer sein, dies mit einer Meldung kenntlich macht und die restlichen Schritte wie "sortieren" usw. nicht mehr ausführt, sondern das Makro beendet.
Ich hoffe ich habe mich nachvollziehbar ausgredrückt :-)
Gruß
Maik

Anzeige
AW: Makroausführung an Bedingung knüpfen
19.12.2007 10:47:43
Maik
Hallo Mag,
kleine Korrektur meiner ersten Mail. Ich war wohl etwas zu schnell, denn ich habe jetzt das durch = ersetzt und nun klappt die Abfrage und es erscheint die Meldung. Wenn ich nun die Meldung mit "ok" bestätige, läuft das Makro aber weiter, und dann kommt beim Punkt sortieren wieder die Fehlermeldung.
Die Abfrage müsste also nach der Ausgabe der Meldung und drücken von "ok", zum Ende des Makros springen und die anderen Schritte ignorieren. So ähnlich wie in meiner Abfrage. Wenn keine Daten vorhanden, dann Meldung und Schluss, sonst Makro weiter abarbeiten.
Wie kann ich Deinen Vorschlag entsprechend erweitern ?
Gruß
Maik

Anzeige
AW: Makroausführung an Bedingung knüpfen
19.12.2007 09:14:00
Beverly
Hi Maik,
andere Möglichkeit

If Application.CountIf(Range("B4:B53"), "") > 0 Then
MsgBox "Keine Daten vorhanden"
Exit Sub
End If


________________________________________

AW: Makroausführung an Bedingung knüpfen
19.12.2007 10:10:27
Maik
Hallo Karin,
habe erst einmal die zweite Möglichkeit gewählt und bekomme jetzt die Meldung, dass es sich um eine ungültige Zahl von Argumenten handelt. Habe ich Deine Abfrage denn richtig ergänzt?
If Application.CountIf(Range("B4:B53"), ("G4:G53"), ("B58:B107"), ("G58:G107")) > 0 Then
MsgBox "Es sind keine Daten vorhanden die sortiert werden könnten !"
Gruß
Maik

Anzeige
AW: Makroausführung an Bedingung knüpfen
19.12.2007 11:55:46
Beverly
Hi Maik,
Application.Countif ist die WorksheetFunktion der Tabellenformel ZÄHLENWEN(). Dort kannst du auch nicht mehrere Bereiche gleichzeitig eintragen. Es müsste dann also in der Form aussehen

If (Application.CountIf(Range("B4:B53"), "") + Application.CountIf(Range("G4:G53"), "")) > 0 Then


Bis später,
Karin

AW: Makroausführung an Bedingung knüpfen
19.12.2007 14:23:00
Maik
Hallo Karin,
nun bekomme ich ständig die Meldung das keine Daten vorhanden sind, obwohl einige Felder mit Namen gefüllt sind. Die Funktion "ZählenWenn" liefert mir doch pro geprüfter Zelle den Wert "1", wenn die jeweilge Zelle leer ist. Bei zwei gefüllten Zellen also "2". Dennoch kommt die Meldung der MsgBox, dass keine Daten vorhanden sind.
Das die Zellen mit Namen - also mit Text - gefüllt werden, kann doch nicht die Ursache sein oder ?
Gruß
Maik

Anzeige
AW: Makroausführung an Bedingung knüpfen
19.12.2007 14:33:56
Beverly
Hi Maik,
der Code geht davon aus, dass in allen Zellen ein Wert drin stehen muss - so hatte ich deine Frage aufgefasst. Mir ist deine Frage somit unklar.
Bis später,
Karin

AW: Makroausführung an Bedingung knüpfen
19.12.2007 14:53:41
Maik
Hi Karin,
ich habe mir jetzt die Funktion und deren Arbeitsweise noch mal genau angesehen, und beim Grübeln über eine Notlösung bin ich auf eine Lösung gestoßen. Wenn ich in Deiner Formeln das "> 0"~f~ gegen
~f~"= 200" tausche , dann funktioniert alles so wie es soll.
Ich hatte schon befürchtet, dass ich mich wiedermal unklar ausgedrückt habe. Ich möchte es aber gerne noch mal versuchen :-)
Es handelt sich um max. 200 Zellen (somit liefert die Funktion das Ergebnis = 200, wenn alle Zellen leer sind) in denen Namen eingetragen werden können, und wenn in nur einer von diesen Zellen ein Name steht, soll mein Makro ganz normal arbeiten und tut es auch. Dies tut es nur nicht, wenn keine Daten vorhanden sind und dann erscheint die Fehlermeldung mit "debuggen" usw. Wenn dies geschieht, weiß ich genau wie meine Kollegen reagieren, und um dies zu umgehen, wollte ich die freudliche Meldung anzeigen lassen, dass es dort nichts zum Sortieren gibt und die andere Meldung gar nicht erst erscheint.
Da gingen meine anderen Erklärungen wohl in die falsche Richtung was?
Aber bislang funktioniert alles bestens. Ich werde noch mal ein wenig damit arbeiten um zu sehen, ob ich nichts übersehen habe.
Jedenfalls danke ich Dir für Deine Mühe und Geduld, ohne die ich es nie oder nur unelegant gelöst bekommen hätte.
Gruß und schönen Tag noch.
Maik
Anzeige

180 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige