Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender Navigationstipps
Inhaltsverzeichnis

On Error Resume ohne Funktion an einem PC

On Error Resume ohne Funktion an einem PC
Günter
Hallo Zusammen,
ich habe eine Fehler bei der Anwendung von "On Error Resume Next".
Hier die Funktion in der is es einsetze:
  • 
    Public Function shape_Exists(Blatt As Object, shpName As String) As Boolean
    Dim Bild As Shape
    On Error Resume Next
    Set Bild = Blatt.Shapes(shpName)
    shape_Exists = Err = 0
    Err.Clear
    On Error GoTo 0
    End Function
    

  • Normalerweise sollte der Fehler, wenn "shpName" nicht vorhanden ist, abgefangen werden.
    Dies funktioniert auch auf verschiedenen PCs nur auf einem speziellen PC (Office 2003) nicht!
    Die anderen PCs haben den gleichen SW-Stand.
    Gibt es einen speziellen Schalter, der an diesem PC ausgeschaltet sein könnte?
    Danke für Eure Hilfe.
    Gruß Günter
    So'ne merkwürdige Konstruktion habe ich ja...
    05.07.2010 15:01:05
    Luc:-?
    …noch nie gesehen, Günter…!
    Ich verwende On Error Resume Next idR nur, wenn ich einen evtl entstandenen Fehler _ mit IsError(…) abfangen und die Weiterarbeit davon abhängig machen will (ginge sonst nicht bzw bei F-Total-Abfangen ersatzweise mit F-Analyse u. evtl Rücksprung). Also hier in etwa so…
    
    Public Function Shape_Exists(Blatt As Object, shpName As String) As Boolean
    On Error Resume Next
    If IsError(Blatt.Shapes(shpName)) Then
    Else: Shape_Exists = True
    End If
    End Function
    
    Dieser Ablauf dürfte dem von dir im Fktskopf angegebenen Ergebnistyp wohl besser entsprechen!
    Gruß Luc :-?
    Anzeige
    AW: On Error Resume ohne Funktion an einem PC
    05.07.2010 15:52:53
    fcs
    Hallo Günther,
    Eine Option zur Unterdrückung der VBA-Fehlerbehandlung gibt es meines Wissens nicht.
    Allerdings benutze ich "On Error Resume Next" nur in absoluten Notfällen.
    Ich halte eine gezielte Fehlerprüfung oder eine Positiv-Suche für besser.
    Gruß
    Franz
    Public Function shape_Exists(Blatt As Object, shpName As String) As Boolean
    Dim Bild As Shape
    'ggf. Fehler setzen des Shapes erzwingen
    On Error GoTo Fehler
    Set Bild = Blatt.Shapes(shpName)
    shape_Exists = True
    Fehler:
    If Err.Number  0 Then shape_Exists = False
    End Function
    'oder
    Public Function shape_Exists(Blatt As Object, shpName As String) As Boolean
    Dim Bild As Shape
    'Positiv nach Bild in vorhandenen Shapes suchen
    For Each Bild In Blatt.Shapes
    If LCase(Bild.Name) = LCase(shpName) Then
    shape_Exists = True
    Exit For
    End If
    Next
    End Function
    

    Anzeige
    AW: On Error Resume ohne Funktion an einem PC
    05.07.2010 16:11:51
    Günter
    Hallo Franz und Luc,
    danke für Eure Hilfe.
    Ich habe beides ohne Erfolg getestet.
    Ich bekomme immer noch den Fehler.
    Das Makro steigt immer am gleichen PC bei
    Set Bild = Blatt.Shapes(shpName)
    
    aus.
    Könnte es an meinem Aufrif liegen?
    call shape_Exists(ActiveSheet, "Bgeprueft")
    
    Aber warum dann nur an einem PC?
    Gruß Günter
    AW: On Error Resume ohne Funktion an einem PC
    05.07.2010 16:27:55
    fcs
    Hallo Günther,
    der Aufruf funktioniert im Prinzip, macht aber wenig Sinn. Normalerweise prüft man das Ergebnis der Prüfung und steuert danach die weiteren Aktionen.
      If shape_Exists(ActiveSheet, "Bgeprueft") = True Then
    MsgBox "Bild ""Bgeprueft"" ist vorhanden"
    Else
    MsgBox "Bild ""Bgeprueft"" ist nicht vorhanden"
    End If
    

    Hast du auch mal meine 2. Variante getestet, die ohne die Set-Anweisung arbeitet?
    Gruß
    Franz
    Anzeige
    AW: On Error Resume ohne Funktion an einem PC
    05.07.2010 16:36:11
    Tino
    Hallo,
    versuch mal so. (getestet unter xl2007)
    Public Function shape_Exists(Blatt As Object, shpName As String) As Boolean
    On Error Resume Next
    shape_Exists = Blatt.Shapes(shpName).DrawingObject.Index <> 0
    End Function
    
    Sub test()
    If shape_Exists(Sheets("Tabelle1"), "Schaltfläche 2") Then
        MsgBox "gibt es"
    Else
        MsgBox "gibt es nicht", vbCritical
    End If
    End Sub
    
    Gruß Tino
    Anzeige
    Extras Optionen: Unterbrechen Bei jedem Fehler
    05.07.2010 16:56:20
    Tino
    Hallo,
    bei Dir ist bestimmt im VBA unter
    Extras - &gt Optionen- &gt Allgemein
    Bei Unterbrechen bei Fehler die Option Bei jedem Fehler gewählt.
    Gruß Tino
    AW: Extras Optionen: Unterbrechen Bei jedem Fehler
    05.07.2010 17:08:46
    Günter
    Hallo Tino,
    Super!!
    Das war es!!
    Danke Günter

    305 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige