Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1716to1720
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

Messagebox nach Fehler an der falschen Stelle

Messagebox nach Fehler an der falschen Stelle
18.10.2019 11:14:57
Florian
Hallo liebe Community,
ich habe einen kleinen Code geschrieben/aufgezeichnet und habe noch ein Problem beim Fehler abfangen :-)
Folgender Hintergrund:
Das Makro setzt Autofilter und kopiert Daten, falls welche vorhanden sind.
Falls es keine Daten gibt, sollte er die Messagebox im Tabellenblatt "Ausdruck" auswerfen.
Die Messsagebox erscheint aber blöderweise jedesmal wenn der Code ausgeführt wird...
Kann mir jemand einen Tipp geben wo mein Fehler liegt?
Vielen Dank im Voraus!!
Viele Grüße
Florian
Sub Makro4()
'Filter
Sheets("Ausdruck").Select
Range("A15:A25").Select
Selection.Clear
Sheets("Gesamt").Select
Selection.AutoFilter Field:=1, Criteria1:=Sheets("Ausdruck").Range("E8").Value
Selection.AutoFilter Field:=13, Criteria1:=Sheets("Ausdruck").Range("C14").Value
'Prüfung, ob Zellen sichtbar sind
On Error GoTo Fehler
If ActiveSheet.Range("K2:K499").SpecialCells(xlCellTypeVisible).Cells.Count > 0 Then
'Copy + Paste
Range("K2:K499").Select
Selection.Copy
Sheets("Ausdruck").Select
Range("A16").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Fehler:
MsgBox ("Keine Unfälle gefunden!!")
End If
End Sub

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Messagebox nach Fehler an der falschen Stelle
18.10.2019 11:26:57
Daniel
Hi
naja, ist doch logisch.
dein Makro läuft immer über die Messagebox.
entweder bei einem Fehlersprung, oder eben am Ende des Makros beim normalen Durchlauf.
Merke: eine Sprungmarke ist kein Stoppsignal und beinflusst den normalen Makroablauf nicht.
bei solchen Fehlersprüngen muss man explizit angeben, dass der Code am Ende bei einem normalen durchlauf nicht verwendet werden soll, sondern das Makro vorher beendet werden muss:
Sub()
On Erorr goto Fehler
Exit Sub
Fehler:
Msgbox "Fehler"
End Sub
allerdings ist es immer besser, den Fehler grundsätzlich zu vermeiden.
in deinem Fall am einfachsten, in dem du die Überschriftenzeile mit einbeziehst und auf >1 prüfst, dann hast du einen sauberen Ablauf und die Fehlerbehandlung bleibt frei, um gegebenenfalls echte Fehler zu bearbeiten:
If ActiveSheet.Range("K1:K499").SpecialCells(xlCellTypeVisible).Cells.Count > 1 Then
Code zum kopieren
Else
Msgbox "kein Unfall gefunden"
End If
Gruß Daniel
Anzeige
AW: Messagebox nach Fehler an der falschen Stelle
18.10.2019 13:25:51
Werner
Hallo Florian,
würde ich so machen, vor allem ohne die ganze Selektiererei.
Sub Makro4()
Application.ScreenUpdating = False
With Worksheets("Gesamt")
Worksheets("Ausdruck").Range("A15:A25").ClearContents
.Range("A1").AutoFilter Field:=1, Criteria1:=Sheets("Ausdruck").Range("E8").Value
.Range("A1").AutoFilter Field:=13, Criteria1:=Sheets("Ausdruck").Range("C14").Value
With .AutoFilter.Range
If .Columns(11).SpecialCells(xlCellTypeVisible).Cells.Count > 1 Then
.Offset(1).Resize(.Rows.Count - 1).Columns(11).Copy
Worksheets("Ausdruck").Range("A16").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Else
MsgBox "Keine Unfälle gefunden."
End If
End With
If .AutoFilterMode Then .AutoFilterMode = False
End With
End Sub
Wobei ich nicht weiß, ab welcher Spalte du im Blatt filtern willst. Gegebenenfalls mußt du .Range("A1").Autofilter... an deine tatsächlichen Bedingungen anpassen.
Gruß Werner
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige