Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1364to1368
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Laufzeitfehler 9, Index außerh. vorher abfangen

Laufzeitfehler 9, Index außerh. vorher abfangen
06.06.2014 12:49:51
Achim
Hallo,
ich habe ein VBA-Script geschrieben, dass zur Laufzeit plötzlich den Inhalt seiner Public-Vars verliert und mir dann einen Laufzeitfehler 9 - Index außerhalb ...
ausgibt.
Nun ist mir bekannt, dass man zwar mit On Error (...) sowas behandeln kann, ich möchte aber vermeiden, dass der Fehler überhaupt auftritt.
Kann man irgendwie abfragen ob die Variablen noch vorhaden sind?
In meinem Beispiel ist es ein Array, dass dann plötzlich nicht mehr existiert.
Versuche ich es mit if VariablenFeld(1) = "" anzusprechen oder mit isNull oder isEmpty gibt es auch immer nur besagte Fehlermeldung
Vielen Dank im Voraus

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 9, Index außerh. vorher abfangen
06.06.2014 13:03:37
Rudi
Hallo,
schwer, dazu was zu sagen ohne den Code zu kennen.
Evtl.
If not IsArray(Variable) Then ...
Gruß
Rudi

AW: Laufzeitfehler 9, Index außerh. vorher abfangen
06.06.2014 14:01:46
Achim
Hallo Rudi,
Not IsArray() kang auf den ersten Blick gut; führt aber leider auch nicht zum Erfolg.
Meine Prüfung IsArray(ArrayName) gibt lustiger Weise "Wahr" aus - ganz komisch
Das Array existiert also, nur ..., weiss auch nicht
es läßt sich kein Eintrag Ansprechen; wenn ich UBOUND() benutze gibt auch den Index-Fehler ...
Nun, ich würde Dir gerne den Code posten, allerdings ist dieser so lang und verzweigt ..., ich weiss selber nicht genau, wo das Löschen des Feldes passiert
Das Workbook wird gestartet, dann werden verschiedene Tabellen erstellt (automatisch) und eine kopie vom WB in ein seperates Verzeichnis gespeichert, dann folgt nach 3 Min. ein OnTime-Aufruf, und dann tritt der Fehler auf.
Ich überlege gerade, ob ich eine eigene Prozedur schreibe, die einfach vorgeschaltet nichts anderes macht, als diesen Fehler zu provozieren und dann das Var-Feld neu lädt ...
Gruß Achim

Anzeige
Arrays sind Base 0 definiert! (owT)
06.06.2014 14:30:16
EtoPHG

AW: Arrays sind Base 0 definiert! (owT)
06.06.2014 14:43:55
Achim
Also, ich habe dann eine eigene Prozedur geschrieben:
Sub laufzeitfehlerAbfangen()
Dim a as Byte
On Error Goto Fehlerbehandlung
if Varfeld(1) = "" then a = 1 'wenn das Feld den Wert vergessen hat, kommt es zum Fehler
Exit Sub
Fehlerbehandlung:
If err.number = 9 then ladeVarFeld
End Sub

Und diese Prozedur wird per OnTime 30 Sek. nach Scriptstart aufgerufen
Das ist sicher nicht die feine-englische-Art, aber ich es scheint zu funktionieren.
Danke und Gruß
Achim

Array prüfen mit GetSafeArrayPointer
07.06.2014 11:35:13
Tino
Hallo,
es gibt eine Möglichkeit dies über eine API zu prüfen.
Declare Sub GetSafeArrayPointer Lib "msvbvm60.dll" Alias _
        "GetMem4" (pArray() As Any, sfaPtr As Long)
                    
Sub Beispiel()
Dim BspArray()

Redim BspArray(1)
MsgBox CheckArray(BspArray)

Erase BspArray
MsgBox CheckArray(BspArray)

End Sub

Function CheckArray(arArray()) As Boolean
Dim sfaPtr As Long
GetSafeArrayPointer arArray, sfaPtr
CheckArray = (sfaPtr > 0)
End Function
Gruß Tino
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige