Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Index ausserhalb des gültigen Bereichs

Index ausserhalb des gültigen Bereichs
26.08.2022 15:18:07
Kina
Hallo zusammen,
Ich hatte vor Ewigkeiten einen VBA Code programmiert und der hat immer super funktioniert. Jetzt habe ich auf 365 Business gewechselt und seither kriege ich die Fehlermeldung Fehler Nr. 9: Index ausserhalb des gültigen Bereichs. Es befindet sich kein Pfad im Code der angepasst werden müsste. Woran könnte das liegen?
Danke für Euren Input
Kina
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Index ausserhalb des gültigen Bereichs
26.08.2022 15:28:51
GerdL
Hallo Kina,
zum Beispiel
an geänderten Blattnamen ?
An Variablen vom Typ "Integer" statt "Long" für Zeilenermittlungen ?
Gruß Gerd
AW: Index ausserhalb des gültigen Bereichs
26.08.2022 15:40:13
Kina
Hallo Gerd,
Die Files sind alle 1:1 die selben, nur der Speicherort hat sich geändert und die Files sind über neue Hyperlinks verknüpft.
Hier einer der Codes:

Private Sub cmdEnter_Click()
'Fügt die eingetragenen Werte ins Tabellenblatt und schliesst das Formular frmContacts
Dim find As Boolean
Dim rng As Range
Dim wkbKontakt As Workbook, wksKontakt As Worksheet
On Error GoTo Fehler
'Spalte A nach wert durchsuchen
Set rng = Sheets("Metafile").Range("A:A").find(What:=cbbClient.Text, LookAt:=xlWhole, _
LookIn:=xlValues)
'Wenn wert entdeckt
If rng Is Nothing Then
find = False
MsgBox "Contact """ & cbbClient.Text & """ not found", vbInformation, _
"Search Contact in Metafile row A"
Else
find = True
If rng.Hyperlinks.Count > 0 Then
Application.EnableEvents = False
rng.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
Set wkbKontakt = ActiveWorkbook
Set wksKontakt = wkbKontakt.Sheets("Contacts")
wksKontakt.Rows("9:9").Insert Shift:=xlDown
With Me.txtDate
If .Value  "" Then wksKontakt.Range("B9").Value = Me.txtDate.Value
End With
With Me.cbbIniciator
If .ListIndex  -1 Then wksKontakt.Range("C9").Value = Me.cbbIniciator.Value
End With
With Me.cbbChannel
If .ListIndex  -1 Then wksKontakt.Range("D9").Value = Me.cbbChannel.Value
End With
With Me.txtSubject
If .Value  "" Then wksKontakt.Range("E9").Value = Me.txtSubject.Value
End With
wkbKontakt.Save
Application.EnableEvents = True
Else
MsgBox "Zum Klienten """ & txtClient.Text & """ gibt es keinen Hyperlink", _
vbInformation, "Prüfen ob Klient ein Hyperlink zugeordnet ist"
End If
End If
Fehler:
With Err
Select Case .Number
Case 0 'Alles OK
Case -2147221014
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description & vbLf & vbLf _
& "Datei """ & rng.Hyperlinks(1).Address & """ zum Hyperlink  existiert nicht"
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
Application.EnableEvents = True
Unload frmNewContact
End Sub

Anzeige
AW: Index ausserhalb des gültigen Bereichs
26.08.2022 16:10:10
Herbert_Grom
Hallo Kina,
probiers mal damit: Wenn du in einem deiner Codes eine "Function" verwendest, die mit

"Private Declare Function ..."
deklariert wird, dann nimm das:

"Private Declare PtrSafe Function ..."
und mach aus "Long" mal "LongPtr".
Ansonsten müsstest du mal alle verwendeten Dateien hochladen.
Servus
Anzeige
AW: Index ausserhalb des gültigen Bereichs
26.08.2022 16:25:13
Kina
Hallo Herbert,
Ich habe keine "Private Declare Function ..." nur "Private Sub" und keine "Long" siehe Code oben.
Danke Dir!
AW: Index ausserhalb des gültigen Bereichs
26.08.2022 16:32:06
Herbert_Grom
Hallo Kina,
dann wird es ohne Beispieldateien kaum möglich sein, den Fehler zu lokalisieren, jedenfalls für mich.
Servus
AW: Index ausserhalb des gültigen Bereichs
26.08.2022 17:40:53
Daniel
Hi
Du solltest uns schon sagen, in welcher Programmzeile der Fehler auftritt.
Deaktiviere dazu bitte ggf das On Error Goto.
Gruß Daniel
Anzeige
AW: Index ausserhalb des gültigen Bereichs
29.08.2022 10:23:37
Kina
Hallo Daniel,
Verzeihung, ich habe jetzt den Debugger gestarted und der zeigt folgende Zeile an welche im Anschluss an den Code oben kommt (die erste mit Private Sub):

Private Sub UserForm_Initialize()
'Werte beim Aufruf des Formulars eintragen. Formular initialisieren
With Me
.txtDate.Value = Date
.cbbClient.List = Range("Client_Name").Value
With Me.cbbIniciator
.AddItem "-"
.AddItem "Client"
End With
With Me.cbbChannel
.AddItem "-"
.AddItem "Phone"
End With
End With
End Sub

Anzeige
AW: Index ausserhalb des gültigen Bereichs
29.08.2022 10:40:38
Rudi
Hallo,
der Fehler wird u.a. durch setzen einer Objektvariable auf ein nicht existierendes Blatt ausgelöst.
Setz dir einen Haltepunkt und geh den Code mit F8 durch.
Vermutlich streikt's hier:
Set wksKontakt = wkbKontakt.Sheets("Contacts")
Gruß
Rudi
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Index außerhalb des gültigen Bereichs in Excel VBA beheben


Schritt-für-Schritt-Anleitung

Um den Laufzeitfehler 9: Index außerhalb des gültigen Bereichs in Excel zu beheben, befolge die folgenden Schritte:

  1. Code-Überprüfung: Durchsuche deinen VBA-Code nach spezifischen Stellen, an denen auf Objekte zugegriffen wird, z.B. Arbeitsblätter oder Zellbereiche.

  2. Blattnamen prüfen: Stelle sicher, dass die Namen der Arbeitsblätter korrekt sind. Ein häufiges Problem ist, dass der Blattname geändert wurde oder das Blatt nicht existiert.

  3. Variablen-Typen überprüfen: Achte darauf, dass die Variablen, die zur Zeilen- oder Spaltenermittlung verwendet werden, vom Typ Long sind, insbesondere wenn sie potenziell große Werte annehmen können.

  4. Hyperlinks testen: Wenn dein Code Hyperlinks nutzt, stelle sicher, dass die Links korrekt und die Zielobjekte vorhanden sind.

  5. Debugging aktivieren: Setze Haltepunkte oder verwende Debug.Print, um die Werte von Variablen und Objekten vor und während der Ausführung anzuzeigen.

  6. Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um spezifische Fehlermeldungen zu erhalten, die dir helfen, das Problem schneller zu identifizieren.


Häufige Fehler und Lösungen

  • Fehler bei Hyperlinks: Wenn der Fehler auftritt, weil ein Hyperlink nicht funktioniert, stelle sicher, dass die Datei existiert und der Pfad korrekt ist.

  • Falscher Blattname: Ein häufiger Fehler ist, dass der Blattname, auf den im Code verwiesen wird, nicht mehr existiert oder falsch geschrieben ist. Überprüfe den Code und die Arbeitsmappe.

  • Zugriff auf nicht existierende Zellen: Wenn du versuchst, auf eine Zeile oder Spalte zuzugreifen, die nicht vorhanden ist, erhältst du den Fehler "Index außerhalb des gültigen Bereichs". Achte darauf, dass deine Zielzelle existiert.

  • Variablen-Typen: Verwende Long anstelle von Integer, um sicherzustellen, dass du die gesamte Reichweite von Zeilen und Spalten abdecken kannst.


Alternative Methoden

Wenn du weiterhin Probleme hast, gibt es alternative Methoden zur Fehlerbehebung:

  • Verwendung von On Error Resume Next: Diese Methode kann helfen, den Code fortzusetzen, wenn ein Fehler auftritt, aber sie versteckt auch andere potenzielle Fehler. Sei vorsichtig beim Einsatz.

  • Verwendung von WorksheetFunction: Anstatt direkt auf Zellen zuzugreifen, nutze Excel-Funktionen über VBA, um Daten zu verarbeiten.

  • Datenüberprüfung: Überprüfe die Werte in den Zellen, die du verarbeitest, um sicherzustellen, dass sie gültig sind und deinem erwarteten Format entsprechen.


Praktische Beispiele

Hier sind einige praktische Beispiele, die dir helfen, den Laufzeitfehler 9 zu vermeiden:

Dim ws As Worksheet
On Error Resume Next
Set ws = ThisWorkbook.Sheets("Contacts")
On Error GoTo 0

If ws Is Nothing Then
    MsgBox "Das Arbeitsblatt 'Contacts' existiert nicht!", vbExclamation
Else
    ' Weiter mit dem Code
End If

In diesem Beispiel prüfst du, ob das Arbeitsblatt existiert, bevor du darauf zugreifst.


Tipps für Profis

  • Code organisieren: Halte deinen Code modular und gut kommentiert. Nutze Subroutinen und Funktionen, um die Lesbarkeit zu verbessern.

  • Versionskontrolle: Wenn du auf eine neue Version von Excel wechselst, teste deinen Code gründlich auf Kompatibilität, da sich die Funktionsweise ändern kann.

  • Performance-Optimierung: Vermeide ständige Interaktionen mit dem Excel-Interface in Schleifen, um die Ausführungsgeschwindigkeit zu verbessern.


FAQ: Häufige Fragen

1. Warum erhalte ich den Fehler "Index außerhalb des gültigen Bereichs" in Access? Dieser Fehler tritt auf, wenn du versuchst, auf ein nicht existierendes Element in einer Datenbank oder einem Array zuzugreifen. Überprüfe die Indizes und die Existenz der Objekte.

2. Was ist der Unterschied zwischen "Index außerhalb des gültigen Bereichs" und "Subscript out of range"? Beide Fehler bedeuten, dass du versuchst, auf ein Element zuzugreifen, das nicht vorhanden ist. "Subscript out of range" ist oft spezifisch für Arrays oder Sammlungen in VBA.

3. Wie kann ich den Fehler in einem Excel-Makro vermeiden? Stelle sicher, dass alle Blattnamen und Zellreferenzen korrekt sind und dass du immer die Existenz der Objekte überprüfst, bevor du darauf zugreifst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige