Supportnet / Forum / Tabellenkalkulation
Errorhandler: - Was mach´ ich falsch ?
Frage
Hallo
Ich versuche mich an folgendem Code:
[quote]Option Explicit
Private Sub CommandButton1_Click()
Dim fs, d, dc, s, n, a, e
Set fs = CreateObject("Scripting.FileSystemObject")
Set dc = fs.Drives
For Each d In dc
s = s & d.DriveLetter & " - " & " Typ: " & d.DriveType
If d.DriveType = 3 Then
n = d.ShareName
Else
On Error GoTo ErrorHandler: n = d.VolumeName
End If
s = s & n & vbCrLf
Next
MsgBox s
Exit Sub
ErrorHandler:
n = "Fehler" & Error
Err.Clear
Resume Next
End Sub [/quote]
Leider wird meine Fehlerroutine nicht ausgeführt.
Woran liegt das oder was hab ich falsch gemacht ?
Danke schonmal für die Hilfe oder Anregungen
mfg vbNewbie
Antwort 1 von coros
Moin vbNewbie,
nimm mal die On Error GoTo - Anweisung aus der If-Abfrage raus und setze es an den Anfang oder zumindest vor die If-Abfrage, dann sollte es funktionieren. Wobei ich eh nicht ganz verstehe, was eine Errorhandler-Anweisung in einer If-Abfrage soll. Wenn das nicht den gewollten Effekt bringen sollte, dann erklär mal bitte, was Du erreichen möchtest, eventuell gibt es dann einen anderen Lösungsweg.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
nimm mal die On Error GoTo - Anweisung aus der If-Abfrage raus und setze es an den Anfang oder zumindest vor die If-Abfrage, dann sollte es funktionieren. Wobei ich eh nicht ganz verstehe, was eine Errorhandler-Anweisung in einer If-Abfrage soll. Wenn das nicht den gewollten Effekt bringen sollte, dann erklär mal bitte, was Du erreichen möchtest, eventuell gibt es dann einen anderen Lösungsweg.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 2 von vbNewbie
Hallo Corros,
Egal wo ich die On Error GoTo Anweisung hinsetze, sie wird nicht ausgeführt.
Ich glaube das liegt daran, daß der Fehler im WSH auftritt.
Bei " n = d.VolumeName " tritt ein Laufzeitfehler 71 auf, wenn in A: keine Diskette oder H: keine CD liegt.
Wie kann man das handhaben?
Gruß und Dank erstmal
vbNewbie
Egal wo ich die On Error GoTo Anweisung hinsetze, sie wird nicht ausgeführt.
Ich glaube das liegt daran, daß der Fehler im WSH auftritt.
Bei " n = d.VolumeName " tritt ein Laufzeitfehler 71 auf, wenn in A: keine Diskette oder H: keine CD liegt.
Wie kann man das handhaben?
Gruß und Dank erstmal
vbNewbie
Antwort 3 von Arno_Nym
Laufzeitfehler 71 bedeutet "Datenträger nicht bereit" (entspricht ja korrekterweise deiner Beschreibung).
Ich weiß zwar nicht, was genau du als Ausgabe errreichen willst, aber ich habe mal den Code folgendermaßen geändert:
Läuft bei mir korrekt und die Ausgabe sieht dann ungefähr so aus (wobei keine Disk und keine CD eingelegt ist):
Kann man ja noch nach eigenen Wünschen anpassen.
Arno
Ich weiß zwar nicht, was genau du als Ausgabe errreichen willst, aber ich habe mal den Code folgendermaßen geändert:
Sub Drivetest()
Dim fs, d, dc, s, n, a, e
Set fs = CreateObject("Scripting.FileSystemObject")
Set dc = fs.Drives
On Error GoTo ErrorHandler
For Each d In dc
s = s & vbCrLf & d.DriveLetter & " - " & "Typ: " & d.DriveType
If d.DriveType = 3 Then
s = s & " - " & d.ShareName
Else
s = s & " - " & d.VolumeName
End If
Next
MsgBox s
Exit Sub
ErrorHandler:
s = s & " - " & "Fehler: " & Error
Err.Clear
Resume Next
End Sub
Läuft bei mir korrekt und die Ausgabe sieht dann ungefähr so aus (wobei keine Disk und keine CD eingelegt ist):
A - Typ: 1 - Fehler: Datenträger nicht bereit
C - Typ: 2 - Datenträgername1
D - Typ: 2 - Datenträgername2
E - Typ: 4 - Fehler: Datenträger nicht bereit
H - Typ: 3 - \\Server1\Freigabe1
I - Typ: 3 - \\Server2\Freigabe2
usw.
Kann man ja noch nach eigenen Wünschen anpassen.
Arno
Antwort 4 von Arno_Nym
Mir fällt grad noch auf: Die Variablen n, a, e sind bei mir natürlich überflüssig weil gar nicht verwendet ;o)
Arno
Arno
Antwort 5 von vbNewbie
Hallo Arno,
So sollte es eigentlich sein.
Nur bei mir ´w98se, Office2000, kam solange eine Fehler bis ich unter Extras | Optionen | Allgemein | Unterbrechen bei Fehlern die Option "Bei jedem Fehler" auf "Bei nicht verarbeiteten Fehlern" geändert habe.
Jetzt Klappt es.
Vielen Dank nochmals.
So sollte es eigentlich sein.
Nur bei mir ´w98se, Office2000, kam solange eine Fehler bis ich unter Extras | Optionen | Allgemein | Unterbrechen bei Fehlern die Option "Bei jedem Fehler" auf "Bei nicht verarbeiteten Fehlern" geändert habe.
Jetzt Klappt es.
Vielen Dank nochmals.
Antwort 6 von Arno_Nym
Kommt doch keiner drauf ;o)
Den Hinweis werd ich mir aber gut merken.
Arno
Den Hinweis werd ich mir aber gut merken.
Arno