Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1728to1732
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
Inhaltsverzeichnis

Fehlermeldung bei Makro unterdrücken

Fehlermeldung bei Makro unterdrücken
17.12.2019 15:39:58
Tobias
Hallo,
in einem Makro wird die Spalte E nach leeren Zellen durchsucht und die entsprechenden Zeilen gelöscht:
Range("E:E").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Klappt wunderbar, bis der Fall eintritt, bei dem es gar keine leeren Zellen in Spalte E gibt. In diesem Fall kommt eine Fehlermeldung und das Makro wird abgebrochen.
DIeser Versuch, die Fehlermeldungen zu unterbinden ging leider schief:
Application.DisplayAlerts = False
Range("E:E").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Application.DisplayAlerts = True
Auch hier kommt die Fehlermeldung „Laufzeitfehler '1004': Keine Zellen gefunden“
Hat jemand eine Idee?
Danke,
Tobias

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehlermeldung bei Makro unterdrücken
17.12.2019 15:43:14
Hajo_Zi
Hallo Tobias,
on Error resume Next
Rang..
on Error goto 0

AW: Fehlermeldung bei Makro unterdrücken
18.12.2019 09:31:57
Tobias
Hallo Hajo,
also das tut einwandfrei! Die anderen Vorschläge habe ich daher gar nicht mehr ausprobiert ...
Vielen Dank!
Tobias
AW: Fehlermeldung bei Makro unterdrücken
17.12.2019 16:13:45
Daniel
Hi
ja das ist das Problem mit den SpecialCells, weil mit Fehler abbrechen, wenn sie keine Zellen finden.
das Application.DisplayAlerts schaltet nicht die Fehlermeldungen aus, sondern die Rückfragen des Systems, wenn es eine Entscheidung vom Anwender anfordert (z.B. vorhandene Datei beim Speichern unter überschreiben, Tabellenblatt wirklich löschen, usw)
Diese Rückfragen sind keine Fehlermeldungen.
in deinem Fall am einfachsten wie von Hajo beschrieben mit On Error Resume Next (bei Fehler mit dem nächsten Programmschritt weiter machen), weil es ja egal ist, ob keine Leerzeilen in der Datei sind, weil du sie raus gelöscht hast oder weil schon vorher keine drin waren.
alternativ mit einer entsprechenden Abfrage:
If Worksheetfunction.CountBlank(Activesheet.Usedrange.Columns(5)) > 0 then
Range("E:E").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End IF

Gruß Daniel
Anzeige
AW: Fehlermeldung bei Makro unterdrücken
17.12.2019 16:14:09
Werner
Hallo,
als Alternative zu Hajos Holzhammermethode:
If WorksheetFunction.CountBlank(Columns("E")) > 0 Then
MsgBox "Hier dein Löschmakro"
End If
Gruß Werner
das tut nicht.
17.12.2019 16:26:26
Daniel
Problem ist, dass das WorksheetFunction.CountBlank die zellen im tatsächlich angegeben Zellbereich ermittelt, während das .SpecialCells immer die Schnittmenge mit der UsedRange bildet und nur in diesem Bereich nach Zellen sucht.
dh dein WorksheetFunction.CountBlank(Columns("E")) gibt dir nur dann eine 0 zurück, wenn wirklich alle 1,04 Mio Zellen der Spalte E gefüllt sind.
Schau dir auch mal meine Antwort an.
Gruß Daniel
Anzeige
AW: das tut nicht.
17.12.2019 16:32:51
Werner
Hallo Daniel,
hast natürlich recht - da hab ich nicht aufgepasst.
Aber ich persönlich würd UsedRange nicht nehmen - wäre mir zu unsicher. Dann lieber die letzte belegte Zelle in Spalte E ermitteln, oder CurrentRegion.
Gruß Werner
AW: das tut nicht.
17.12.2019 16:49:51
Daniel
entscheidend ist die Frage, was das SpecialCells macht und das richtet sich meinen Erfahrungen nach nach der Usedrange.
daher ist es hier am sinnvollsten, diese zu verwenden.
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige