Anzeige
Archiv - Navigation
1940to1944
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
Laufzeitfehler 9 - Index außerhalb des gültigen Bereichs
07.08.2023 13:39:00
Romi
Hallo Community,

könnt ihr mich bitte eventuell auf meinen Denkfehler hinweisen? Mit dem nachfolgenden Code füge ich ein Worksheet in der bestehenden Arbeitsmappe hinzu und benenne es.



Sub DatenImportierenExportieren()
Dim IndexSheet_1, IndexSheet_2 as Long
Set wsNew = ThisWorkbook.Worksheets.Add

With wsNew
.Name = "DatenImport"
.Move After:=Sheets(Sheets.Count)
End With

IndexSheet_1 = Worksheets("Veränderung").Index
IndexSheet_2 = Worksheets("DatenImport").Index
ThisWorkbook.VBProject.VBComponents(Worksheets(IndexSheet_2).CodeName).CodeModule.AddFromString strCode

end sub

In dem neuem Worksheet möchte ich nun Code hinterlegen. Jedoch gibt er mir die im Betreff genannte Fehlermeldung
ThisWorkbook.VBProject.VBComponents(Worksheets(IndexSheet_2).CodeName).CodeModule.AddFromString strCode
für diese Zeile aus. Wenn ich im Code mit dem Mauszeiger rüberfahre, sehe ich das er als Longzahl die "3" im IndexSheet_2 gespeichert hat. Könnt ihr mich bitte unterstützen? Danke.

VG Romi

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 9 - Index außerhalb des gültigen Bereichs
07.08.2023 14:11:54
daniel
HI
bei mir läuft der Code ohne Fehler durch und macht auch das gewünschte.
Gruß Daniel
Code in Tabellenblatt schreiben
07.08.2023 14:59:27
Romi
Hallo Daniel und danke für das Testen.

Aufgrund diesen Hinweises habe ich die Sub in ein Standardmodul gepackt, ausprobiert und der Code funktioniert. Da sich die Daten in Arbeitsmappen befinden, die mir monatlich zugesandt werden und die Aufgaben regelmäßig anstehen, wollte ich die Sub in meiner persönlichen Makroarbeitsmappe speichern.

Was müsste ich an der Codezeile verändern, damit das auch von meiner persönlichen Makroarbeitsmappe aus funktioniert?

VG Romi
AW: Code in Tabellenblatt schreiben
07.08.2023 15:14:34
daniel
und wo soll jetzt was hinzugefügt werden?
ThisWorkbook ist immer die Mappe, die den Code enthält.
wenn man mit mehreren Mappen arbeitet, sollte man immer die Mappe angeben, auf die man sich bezieht.
Wenn du mit ActiveSheet arbeiten willst, solltest du bedenken, dass Aktionen wie Sheets.Add das aktive Tabellenblatt wechselt und danach das neu hinzugefügte das aktive Tabellenblatt ist, eben so hat natürlich das ActiveWorkbook gewechselt.
Gruß Daniel
Anzeige
Problem gelöst
07.08.2023 18:41:50
Romi
Danke für die Erläuterungen. Konnte mein Problem damit lösen.

120 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Anzeige

Infobox zum Thema

EXCEL - Laufzeitfehler 9 - Index außerhalb des gültigen Bereichs


Inhaltsverzeichnis


Die Fragestellung


Du erhältst den Laufzeitfehler 9, der besagt "Index außerhalb des gültigen Bereichs" in deinem VBA-Code. Du möchtest wissen, was diesen Fehler verursacht und wie du ihn beheben kannst.


Erläuterung des Problems {#erläuterung-des-problems}


Der Laufzeitfehler 9 in VBA tritt auf, wenn du versuchst, auf ein Element eines Arrays oder einer Sammlung zuzugreifen, das nicht existiert. Das kann passieren, wenn:

  • Du versuchst, auf ein Arbeitsblatt oder eine Arbeitsmappe mit einem Namen oder Index zuzugreifen, der nicht existiert.
  • Du durch ein Array iterierst und versuchst, auf einen Index außerhalb seiner Grenzen zuzugreifen.
  • Du eine Sammlung von Objekten wie Formulare oder Steuerelemente referenzierst, die nicht im aktuellen Kontext vorhanden sind.

Lösung des Problems {#lösung-des-problems}


Um den Fehler zu beheben, solltest du folgende Schritte durchführen:

  1. Überprüfe alle Objektverweise, die du in deinem Code verwendest, und stelle sicher, dass die Namen korrekt geschrieben sind.
  2. Wenn du mit Indizes arbeitest, stelle sicher, dass du innerhalb der gültigen Bereichsgrenzen bleibst.
  3. Füge Fehlerbehandlungsmechanismen hinzu, um dein Programm robuster zu machen.

Hier ist ein Beispiel für eine Fehlerbehandlung:

On Error GoTo ErrHandler
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("MeinBlatt")

' Dein Code hier

Exit Sub
ErrHandler:
If Err.Number = 9 Then
    MsgBox "Das angegebene Arbeitsblatt existiert nicht.", vbCritical
End If

Anwendungsbeispiele aus der Praxis


  • Dynamisches Referenzieren von Arbeitsblättern: Wenn du Arbeitsblätter basierend auf Benutzereingaben oder externen Daten referenzierst.
  • Durchlaufen von Datenstrukturen: Wenn du Arrays oder Sammlungen in deinem Code durchläufst.

Tipps


  • Verwende die Exists-Funktion, um zu überprüfen, ob ein Arbeitsblatt oder eine andere Sammlung existiert, bevor du darauf zugreifst.
  • Verwende die IsArray-Funktion, um zu überprüfen, ob eine Variable ein Array ist, bevor du versuchst, durch sie zu iterieren.

Verwandte Themenbereiche


  • Fehlerbehandlung in VBA
  • Dynamische Referenzierung von Objekten
  • Sicheres Durchlaufen von Arrays und Sammlungen

Zusammenfassung


Der Laufzeitfehler 9 "Index außerhalb des gültigen Bereichs" weist auf ein Problem beim Zugriff auf Elemente eines Arrays oder einer Sammlung hin. Um diesen Fehler zu beheben, solltest du sicherstellen, dass alle Referenzen korrekt sind und innerhalb der gültigen Grenzen liegen. Die Implementierung einer Fehlerbehandlung kann helfen, solche Fehler zu erkennen und angemessen darauf zu reagieren.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige