Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
On Error goto 0 vs. Err.Clear
zurück: workbook ohne Makros speichern weiter: falls Zeile gelöscht wird, soll auch ComboBox verschwinden Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Offen Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Phelan XLPH
Fortgeschritten


Verfasst am:
03. Apr 2009, 20:24
Rufname: Phelan

On Error goto 0 vs. Err.Clear - On Error goto 0 vs. Err.Clear

Nach oben
       Version: Office 2007

nAbend,

Err.Clear -> das ist mir klar

On Error goto 0 -> aber das hier nicht so, ich dachte immer das sei
das gleiche.

Ich benutze es immer in Verbindung mit On ErrorResume Next.
On ErrorResume Next setze ich dann direkt vor die mögliche Fehlerquelle(Zeile)
On Error goto 0 direkt danach.

Laut Hilfe: On Error GoTo 0
Deaktiviert alle aktivierten Fehlerbehandlungsroutinen in der aktuellen Prozedur.

was heisst das?

_________________
Was vorstellbar ist, ist auch machbar. - Albert Einstein
pfnuesu
VB(A) -> Excel/Word <-


Verfasst am:
03. Apr 2009, 20:35
Rufname:
Wohnort: Flamatt (CH)


AW: On Error goto 0 vs. Err.Clear - AW: On Error goto 0 vs. Err.Clear

Nach oben
       Version: Office 2007

Hallo

Das bedeutet, dass nach einem On Error GoTo 0 alle Fehler behandelt würden, als ob es keine Fehlerbehandlung gäbe - also Laufzeitfehler während des Programmablaufs etc.

_________________
Gruss aus Bern
Pfnuesu
Phelan XLPH
Fortgeschritten


Verfasst am:
03. Apr 2009, 20:59
Rufname: Phelan

AW: On Error goto 0 vs. Err.Clear - AW: On Error goto 0 vs. Err.Clear

Nach oben
       Version: Office 2007

Hatte mal den fall dasss ich in einer schleife Error ausgelöst habe und
mit OERN (On Error Resume Next) die zeile übersprungen habe.
Kam dann - wegen schleife - wie zu der selben stelle und dann brachte
mir das OERN auch nix mehr.

Setze ich direkt nach der mögl. Fehlerquelle On Error goto 0, habe ich dieses
Problem nicht.

Muss ich denn jetzt generell On Error goto 0 setzen oder Err löschen, passiert
es nur wenn er inden selben Fehler läuft?

Muss ich denn um einen Code zu 100% Fehlerfrei ablaufen zu lassen auf
alle möglichen Fehler speziell reagieren. Habe hier auch oft gelesen, dass bemängelt wird, dass wenn Fehler auftreten die nicht behandelt werden.

Was heisst den behandeln? Ausgabe der fehlerNr und Beschreibung - ist
das Fehlerbehandlung? Um einen Code Narrensicher zu machen, ist man
doch mehr mit der Fehlerüberwachung und Eingabeeinschränkungen be-
schäftigt als mit dem eigentlichen Inhalt.

...ich glaub ich hypaventiliere... Shock Shock Shock

_________________
Was vorstellbar ist, ist auch machbar. - Albert Einstein
pfnuesu
VB(A) -> Excel/Word <-


Verfasst am:
03. Apr 2009, 21:19
Rufname:
Wohnort: Flamatt (CH)

AW: On Error goto 0 vs. Err.Clear - AW: On Error goto 0 vs. Err.Clear

Nach oben
       Version: Office 2007

Hallo

Wie gesagt, bei Error Resume Next wird die Fehlerhafte Zeile ignoriert, das kann schon mal zu einer Endlosschleife führen.

Error Resume Next gilt für alle Fehler - wenn Du also eine "problematische" Zeile hast, setzt Du am besten gleich im Anschluss wieder On Error Goto 0

Hier ein Beispiel mit Verzweigung zur Fehlerbehandlung

Code:
Sub Blattschutz()
Dim i As Integer
Dim antw As String

antw = InputBox("Bitte Passwort eingeben", _
                "Passwort", "Passwort")
   
If Trim(antw) <> "" Then
    For i = 1 To Sheets.Count
        On Error GoTo fehler
        Sheets(i).Unprotect Password:=Trim(antw)
        On Error Resume Next
    Next i
End If

Exit Sub

fehler:
MsgBox "Passwort ungültig"

End Sub


Alternativ kannst Du natürlich auch zu Beginn der Sub ein "On Error Goto fehler" setzen, und dann je nach Fehler reagieren. Dies zb. gemäss Err.Number oder Err.Description:

Code:

Sub Ferien()
On Error GoTo fehler

    With Selection
        .Interior.ColorIndex = 3
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlCenter
        .Borders(xlDiagonalUp).LineStyle = xlNone
        .Value = "F"
    End With
   
    With Selection.Font
        .ColorIndex = 4
        .Size = 10
        .Superscript = False
        .Subscript = False
    End With

Exit Sub

fehler:
If InStr(1, Err.Description, "ColorIndex") Then
  MsgBox "Bitte erst Blattschutz entfernen"
End If
End Sub


(Hier Description, weil die Err.Number auf einen allgemeinen Fehler (1004?) verwiesen hatte)

_________________
Gruss aus Bern
Pfnuesu
Phelan XLPH
Fortgeschritten


Verfasst am:
03. Apr 2009, 21:29
Rufname: Phelan


AW: On Error goto 0 vs. Err.Clear - AW: On Error goto 0 vs. Err.Clear

Nach oben
       Version: Office 2007

Was das Thema angeht bin ich etwas sprunghaft mal so mal so...

Danke

_________________
Was vorstellbar ist, ist auch machbar. - Albert Einstein
dera
Excel/VBA Learning by Doing


Verfasst am:
03. Apr 2009, 22:27
Rufname:

AW: On Error goto 0 vs. Err.Clear - AW: On Error goto 0 vs. Err.Clear

Nach oben
       Version: Office 2007

Hallo
Das mit dem On Error..... und dem Err Object ist sehr defiziel(schreibt man das so). Das muss man sich nach Bedarf zurechtfeilen und dabei genau nachdenken. Ich nutze die ganze "On Error Sache" ja gern zur Eingabevalidierung. Wenn z.B. der Inhalt einer Textbox in eine numerische Variable gepackt werden soll, könnte man nach korrekter Programmierkonvention erst mal abfragen um was für ein Format es sich da handelt und irgendwie reagieren. Schiet watt:
Der User schreibt in Textbox1 "Heute ist schönes Wetter"
Code:
Sub Dauser_vollmeckern()
Dim A as Long
On Error GoTo Fehler
A = Textbox1
Exit Sub
Fehler:
MsgBox("Du bist der Ober-Dauser")
Textbox1 = ""
End Sub


Und!!
Zitat:
Um einen Code Narrensicher zu machen, ist man
doch mehr mit der Fehlerüberwachung und Eingabeeinschränkungen be-
schäftigt als mit dem eigentlichen Inhalt.

Das ist doch immer so. Wenn man mal mit VB ein Programm schreibt hat man ja seine Objekte vor Augen und kann gut auf alles mögliche Reagieren, aber bei Excel-VBA hat der User soviel Möglichkeiten Blödsinn zu machen da hat man zu 95% zu tun Ihn da auszubremsen.

dera
ransi
Für den Hausgebrauch reicht's..


Verfasst am:
03. Apr 2009, 22:40
Rufname:
Wohnort: Im schönen Weserbergland

AW: On Error goto 0 vs. Err.Clear - AW: On Error goto 0 vs. Err.Clear

Nach oben
       Version: Office 2007

HAllo

Da kann man sich noch so abmühen mit On Error und ähnlichem...
Aktiviert mal in der VBE unter Extras-Optionen-Register Allgemein-Unterbrechen bei Fehlern-Bei jedem Fehler.
Dann kannst du Fehlerroutinen schreiben das nur so kracht.
Alles für die Katz...
:-(

Spielt mal mit der genannten Einstellung und diesem hochkomplexen Code dann versteht ihr was ich meine.
Option Explicit


Sub Dauser_vollmeckern()
Dim A As Long
On Error GoTo Fehler
A = "Ich bin TEXT"
Exit Sub
Fehler:
MsgBox ("Du bist der Ober-Dauser")
End Sub


Und was das allerschlimmste ist:
An diese Einstellung kommst du mit Code nur sehr schwer ran um sie sich passend zu stellen.

ransi
dera
Excel/VBA Learning by Doing


Verfasst am:
03. Apr 2009, 23:45
Rufname:

AW: On Error goto 0 vs. Err.Clear - AW: On Error goto 0 vs. Err.Clear

Nach oben
       Version: Office 2007

Hallo
"Bei jedem Fehler unterbrechen" ist ja dann voll die Härte.
Normalerweise geht sowas:
In Textbox1 wurde "123" geschrieben
Code:
Dim A as long
A = Textbox1
Textbox1.Text ist immer String aber man kann damit die Variable A belegen weil das irgendwie "unsauber" kompiliert wird.

dera
pfnuesu
VB(A) -> Excel/Word <-


Verfasst am:
04. Apr 2009, 00:03
Rufname:
Wohnort: Flamatt (CH)

AW: On Error goto 0 vs. Err.Clear - AW: On Error goto 0 vs. Err.Clear

Nach oben
       Version: Office 2007

Ich weiss genau was ihr meint:

Da ich nicht von vb6 auf vb.net wechseln wollte, habe ich mir mit PowerBasic einen neuen Dialekt angelernt. Da hab' ich gemerkt, wie wir in VB / VBA verwöhnt werden...

_________________
Gruss aus Bern
Pfnuesu
Phelan XLPH
Fortgeschritten


Verfasst am:
04. Apr 2009, 00:43
Rufname: Phelan

AW: On Error goto 0 vs. Err.Clear - AW: On Error goto 0 vs. Err.Clear

Nach oben
       Version: Office 2007

hi,

ich kenne das von C das alle Datentypen genau Convertiert, alle
Variablen, Constanten definiert und deklariert werden müssen.

Aus der Hilfe:
Konvertieren zwischen Datentypen.
CBool, CByte, CCur, CDate, CDbl, CDec, CInt, CLng, CSng, CStr, CVar, CVErr,
Fix, Int

zu "unsauberes" Kopilieren:
Da ist nix unsauber, hab in der Hilfe mal gelesen dass der Kompilier
die folgende Zuweisung erkennt und automatisch die variable in einen
anderen Datentypen konvertiert.

Deshalb macht auch folgender Code keine Probleme:
Dim A As Long
A = "123"

Trotzdem sind die oberen Funktionen nicht unwichtig, da der Kompiler
nicht alles erkennt. Das merkt man offensichtlich beim Datentyp Date.
Wie oft musste ich da schon CDate() verwenden.

Ich dachte ich könnt hiermit den Fehler abfragen aber Pustkuchen:
IsError erkennt nur Fehlerwerte welche zB hierdurch erstellt werden
können :CVErr(32767) .

Ich versteh das so: Ich nehme eine Zahl, wandle sie in einen Fehlerwert
um und fange sie dann mit IsError ab. Macht das Sinn???!!!!!

Ich will doch auf Fehlerwerte reagieren und nicht vorher erst erzeugen
um später festzstellen das es ein fehler ist. den Weg kann ich mir auch sparen.
Oder verstehe ich das Falsch. hab hier noch nicht eine Fehlerbehandlung
mit IsError gefunden.

_________________
Was vorstellbar ist, ist auch machbar. - Albert Einstein
Nepumuk
VB / VBA Programmierer


Verfasst am:
05. Apr 2009, 12:15
Rufname: Max
Wohnort: Dusseldoof

AW: On Error goto 0 vs. Err.Clear - AW: On Error goto 0 vs. Err.Clear

Nach oben
       Version: Office 2007

Hallo,

mit IsError kannst du nur Fehlerwerte in Zellen abfragen. Wenn du z.B. die Value-Eigenschaft eine Zelle an eine Variable übergeben willst um damit in VBA weiterzurechen, die Zelle aber eine Formel enthält, welche auch einen Fehlerwert zurüchgeben kann (#NV, #DIV/0! .....) dann solltest du vorher mit IsError prüfen, ob da tatsächlich ein richtiger Wert in der Zelle steht.

CVErr benutzt man eigentlich nur, um mit benutzerdefinierten Tabellenfunktionen (UDF) absichtlich einen Fehlerwert auszugeben. Um dem User zu zeigen, dass seine Eingeben nicht verarbeitet werden können, oder unvollständig sind.

_________________
De fontibus non est disputandum

Gruß
Nepumuk Cool
Phelan XLPH
Fortgeschritten


Verfasst am:
05. Apr 2009, 14:13
Rufname: Phelan


AW: On Error goto 0 vs. Err.Clear - AW: On Error goto 0 vs. Err.Clear

Nach oben
       Version: Office 2007

Danke Nepumuk,

dass kam mir später dann auch in den Sinn. Smile
Alles andere wäre unsinnig... Confused

_________________
Was vorstellbar ist, ist auch machbar. - Albert Einstein
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Excel VBA (Makros): On Error bei Öffnen von Word-Dokument 10 HerrLehmann 1717 25. Apr 2008, 08:56
HerrLehmann On Error bei Öffnen von Word-Dokument
Keine neuen Beiträge Excel VBA (Makros): kurze frage zu On Error GoTo ... 3 Kieni 401 02. Apr 2008, 14:04
Kieni kurze frage zu On Error GoTo ...
Keine neuen Beiträge Excel VBA (Makros): Arbeitsblatt in Lotus Notes 6.5 versenden (VBA) und Err 91 8 dangerguitar 2719 04. März 2008, 17:50
Gast Arbeitsblatt in Lotus Notes 6.5 versenden (VBA) und Err 91
Keine neuen Beiträge Excel VBA (Makros): Run-time Error 13... im Prinzip egal 6 hund 4453 27. Feb 2008, 20:00
hund Run-time Error 13... im Prinzip egal
Keine neuen Beiträge Excel Formeln: SUMPRODUCT (mit Abfrage auf Datum Column - Error) 1 simonpfau 902 08. Feb 2008, 11:10
urs SUMPRODUCT (mit Abfrage auf Datum Column - Error)
Keine neuen Beiträge Excel VBA (Makros): ComboBox.clear wird nicht ausgeführt 1 Girgl 501 01. Dez 2007, 22:06
Girgl ComboBox.clear wird nicht ausgeführt
Keine neuen Beiträge Excel VBA (Makros): goto wird immer ausgeführt 3 Seiler A. 499 19. Okt 2007, 14:30
Case goto wird immer ausgeführt
Keine neuen Beiträge Excel VBA (Makros): Runtime Error 1004 3 SUPERDAU 602 01. Okt 2007, 01:59
Nepumuk Runtime Error 1004
Keine neuen Beiträge Excel VBA (Makros): On Error Resume Next - wird ignoriert 6 kriber 906 21. Sep 2007, 12:35
kriber On Error Resume Next - wird ignoriert
Keine neuen Beiträge Excel VBA (Makros): Applikation.Goto verliert sich 56 ChillOut 2325 10. Sep 2007, 12:10
ChillOut Applikation.Goto verliert sich
Keine neuen Beiträge Excel VBA (Makros): On Error funktioniert nicht (bin noch anfänger) 1 Gast 608 04. Sep 2007, 15:22
bst On Error funktioniert nicht (bin noch anfänger)
Keine neuen Beiträge Excel VBA (Makros): Error unterdrücken 1 BloodyNewbie 1011 31. Aug 2007, 16:34
Bloody Newbie Error unterdrücken
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: HTML Forum