Supportnet Computer
Planet of Tech

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.

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

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:

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

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.

Antwort 6 von Arno_Nym

Kommt doch keiner drauf ;o)

Den Hinweis werd ich mir aber gut merken.

Arno

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: