2009-06-03 6 views
0

das ist seltsam, ich habe ein Makro mit einem Array, das mehrere Registrierungsschlüssel enthält. Und ich möchte die Werte dieser in vordefinierte Lesezeichen in einem Word-Dokument einfügen.Vba - Bei Fehler funktioniert nicht? Lese Registrierungswert

Das funktioniert gut, wenn der Schlüssel dort ist, aber wenn es nicht ist, möchte ich, dass der Code das überspringt und weiterhin das nächste im Array versucht.

Ich habe den Code bekommen, die wie folgt aussieht:

sVerdi = objShell.RegRead(regPath & "\" & Felter(iTeller)) 

Diese Codezeile gibt den Wert des Registrierungsschlüssels, diktiert von den ersten in der Anordnung. Aber, wenn der Registrierungsschlüssel nicht in der Registrierung ist, bekomme ich natürlich einen Fehler:

Run-time error '-2147024894(80070002)': 

Unable to open registry key 
"HKEY_CURRENT_USER\Blablabla" for reading 

Nun, dies ist logisch, aber wenn ich in einem „On Error GoTo 0“ werfen, dann es einfach ignoriert diese Linie. Ich kann es nicht herausfinden, ich gehe Schritt für Schritt durch jedes Array, das der Fehler immer wieder kommt.

Irgendeine Idee?

+0

Warum wurde dies als "vb.net" markiert? Es scheint keine vb.net Frage zu sein. –

Antwort

1

Wenn Sie sagen, es ignoriert nur diese Linie, meinst du die On Error GoTo 0? On Error GoTo 0 bedeutet nicht, Fehler zu ignorieren: es bedeutet 'Wiederherstellung der Standardfehlerbehandlung'. Wollten Sie On Error Resume Next verwenden?

+0

Es ignoriert diese Zeile, was bedeutet, es geht einfach weiter und ich bekomme die Fehlermeldung. Ich möchte, dass es alles überspringt, wenn es auf einen Fehler trifft und den nächsten Eintrag im Awway fortsetzt. Daher wird KEIN Fehler angezeigt. Wenn ich On Error Resume Next verwende, tut es das gleiche, außer dass keine Fehlermeldung ausgelöst wird. Aber das bedeutet, dass die Zeichenfolge, wo ich die Werte aus den Registrierungseinträgen speichern, nicht aktualisiert wird. Daher wird der gleiche Wert in das nächste Lesezeichen eingefügt. Ich brauche den Code neu zu starten, wenn es einen Fehler auftritt. Vielleicht müssen Sie den ganzen Code sehen? –

+1

Nur die Antwort gefunden, ich musste die Zeichenfolge zurücksetzen, wo der letzte Registrierungswert aus dem Array gespeichert wurde. Danke! :) –