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

Forumthread: Index außerhalb des gültigen Bereichs

Index außerhalb des gültigen Bereichs
26.07.2005 11:17:50
Benny
ich will mehrere Dateien gleicher Art in eine zusammenfassen!
zuerst wäle ich die dateien aus!
folgender lösungsvorschlag wurde mir gemacht! ich denke der ist echt gut!
allerdings bekomme ich immer den fehler: Index außerhalb des gültigen Bereichs!
Woran kann das liegen?
Danke im voraus!
Gruß
Benny
Option Explicit

Sub loaddatatool()
Dim fdp As FileDialog
Dim vrtSelectedItem As Variant
Dim tmp()
Dim i As Integer
i = 1
Set fdp = Application.FileDialog(msoFileDialogFilePicker)
With fdp
.AllowMultiSelect = True
.InitialFileName = ""
.Title = "XLS-Datei Import zum lesen"
.Filters.Clear
.Filters.Add "Microsoft Office Excel-Dateien", "*.xls"
.ButtonName = "Load"
.InitialView = msoFileDialogViewList
If .Show = -1 Then
For Each vrtSelectedItem In .SelectedItems
tmp(i) = vrtSelectedItem
Workbooks("Zusammenfassung").Sheets("Datei").Cells(i, 1).Value = tmp(i)
i = i + 1
Next
End If
End With
End Sub


Sub useing()
Dim i As Integer
Dim mappe As Workbook
Application.ScreenUpdating = False
For i = 1 To 100
Workbooks.Open Filename:= _
Workbooks("Zusammenfassung").Sheets("Datei").Cells(i, 1).Value
Sheets(1).Select
Cells.Select
Selection.Copy
Windows("Zusammenfassung").Activate
Sheets.Add
ActiveSheet.Paste
Next i
For Each mappe In Application.Workbooks
If mappe.Name = ThisWorkbook.Name Or mappe.Name = "Zusammenfassung" Then
Else
mappe.Close
End If
Next
Application.ScreenUpdating = True
End Sub

Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Index außerhalb des gültigen Bereichs
26.07.2005 11:39:42
Andi
Hi,
welche Zeile wird denn im Debug-Modus markiert?
Schönen Gruß,
Andi
AW: Index außerhalb des gültigen Bereichs
26.07.2005 11:45:11
Benny
Keine! versteh das auch nicht!
AW: Index außerhalb des gültigen Bereichs
26.07.2005 11:58:45
Matthias
Hallo Benny,
Workbooks("Zusammenfassung") ?
heißt meist Workbooks("Zusammenfassung.xls")
ohne Erweiterung nur, wenn noch nicht gespeichert ("Mappe1")
Gruß Matthias
Anzeige
AW: Index außerhalb des gültigen Bereichs
26.07.2005 11:59:03
Benny
wenn ich einzeln debugge wirft es mir bei folgender zeile den fehler:
Workbooks("Zusammenfassung").Sheets("Datei").Cells(i, 1).Value = tmp(i)
gruß
benny
AW: Index außerhalb des gültigen Bereichs
26.07.2005 11:59:03
Benny
wenn ich einzeln debugge wirft es mir bei folgender zeile den fehler:
Workbooks("Zusammenfassung").Sheets("Datei").Cells(i, 1).Value = tmp(i)
gruß
benny
Anzeige
AW: Index außerhalb des gültigen Bereichs
26.07.2005 11:59:34
Andi
Hm, hast Du denn alle Namen richtig geschrieben? Vielleicht heisst Deine Datei ja zB "Zusamenfassung" oder so, also einen Buchstaben vergessen.
Oder probier mal bei folgender Code-Zeile
Workbooks.Open Filename:= _
Workbooks("Zusammenfassung").Sheets("Datei").Cells(i, 1).Value
den kompletten Pfad anzugeben, also zB
Workbooks.Open Filename:= _
Workbooks("C:\Eigene Dateien\Zusammenfassung").Sheets("Datei").Cells(i, 1).Value
Viel Erfolg,
Andi
Anzeige
AW: Index außerhalb des gültigen Bereichs
26.07.2005 11:58:27
Erich
Hallo Benny,
da waren mehrere Zeilen, die zum Abbruch führen. Ist jetzt sicher noch nicht "schön", läuft aber durch. Ich habe meine Änderungen mit ### gekennzeichnet:
Option Explicit
' ### überall: "Zusammenfassung.xls" statt "Zusammenfassung"
Sub loaddatatool()
Dim fdp As FileDialog
Dim vrtSelectedItem As Variant
Dim tmp(100)                        ' ### war tmp()
Dim i As Integer
i = 1
Set fdp = Application.FileDialog(msoFileDialogFilePicker)
With fdp
.AllowMultiSelect = True
.InitialFileName = ""
.Title = "XLS-Datei Import zum lesen"
.Filters.Clear
.Filters.Add "Microsoft Office Excel-Dateien", "*.xls"
.ButtonName = "Load"
.InitialView = msoFileDialogViewList
If .Show = -1 Then
For Each vrtSelectedItem In .SelectedItems
tmp(i) = vrtSelectedItem
Workbooks("Zusammenfassung.xls").Sheets("Datei").Cells(i, 1).Value = tmp(i)
i = i + 1
Next
End If
End With
End Sub
Sub useing()
Dim i As Integer
Dim mappe As Workbook
Application.ScreenUpdating = False
For i = 1 To 100
' ### neue eingefügte Zeile (Ende bei 1. leerer Zelle der Dateiliste
If IsEmpty(Workbooks("Zusammenfassung.xls").Sheets("Datei").Cells(i, 1)) Then Exit For
Workbooks.Open Filename:= _
Workbooks("Zusammenfassung.xls").Sheets("Datei").Cells(i, 1).Value
Sheets(1).Select
Cells.Select
Selection.Copy
Windows("Zusammenfassung.xls").Activate
Sheets.Add
ActiveSheet.Paste
Next i
For Each mappe In Application.Workbooks
If mappe.Name = ThisWorkbook.Name Or mappe.Name = "Zusammenfassung" Then
Else
mappe.Close SaveChanges:=False     ' ### "SaveChanges:=False" eingefügt (kein Fehler)
End If
Next
Application.ScreenUpdating = True
End Sub

Grüße aus Kamp-Lintfort
Erich
Anzeige
AW: Index außerhalb des gültigen Bereichs
26.07.2005 12:13:06
Benny
hallo erich! funktioniert das bei dir gaz sicher genau so?
danke für die Mühe!
AW: Index außerhalb des gültigen Bereichs
26.07.2005 12:45:07
Erich
Hallo Benny,
ja, genau so. Ich habe Excel 10.0 - XP, aber das sollte nichts ausmachen.
Was geht bei dir nicht? Bei welcher Zeile kommt welche Fehlermeldung?
Grüße aus Kamp-Lintfort
Erich
AW: Index außerhalb des gültigen Bereichs
26.07.2005 12:58:02
Sylvio
Tschuldigung hat erst jetzt wieder Zeit
1) Prüf ob deine Datei wirklich "Zusammenfassung" heißt
2) das Sheet in Zusammenfassung auch "Datei"
ansonsten funzt der code bei mir so auch
Gruß Sylvio
Anzeige
AW: Index außerhalb des gültigen Bereichs
26.07.2005 13:46:31
Benny
Ich glaub ich bin zu blöd dafür!
Ihr ruft dann doch auch die Makros nacheinander auf?
Bei mir schreibt er in Feld A1 den Pfad der ausgewählten Datei und wenn ich dann
das 2. makro ausführe kommt Fehler 400!
HILFE!!!
AW: Index außerhalb des gültigen Bereichs
26.07.2005 13:50:34
Sylvio
Heb mal die mappe hoch
gruß Sylvio
AW: Index außerhalb des gültigen Bereichs
26.07.2005 15:48:27
Erich
Hallo Benny,
in der runtergeladenen Mappe 25009.xls trat jetzt auch ein Fehler auf in
Sub useing() in der Zeile
Cells.Select
Nach Änderung in
Sheets(1).Cells.Select
liefs.
Besser wären aber immer statt
Sheets(1).Select
Cells.Select
Selection.Copy
Windows("Zusammenfassung.xls").Activate

die Zeilen
Sheets(1).Cells.Copy
Windows("Zusammenfassung.xls").Activate

Im VBA-Editor habe ich unter Extras - Optionen auf der Registerkarte "Allgemein" bei "unterbrechen bei Fehlern" die Option "Bei jedem Fehler" angeklickt - dann fällt das Testen leichter.
Grüße aus Kamp-Lintfort
Erich
Anzeige
AW: Index außerhalb des gültigen Bereichs
27.07.2005 07:32:30
Benny
hallo, erich! jetzt gehts! danke! wie kann ich aber die inhalte der ausgewählten dateien in ein sheet zusammenfügen! eigentlich wollte ich nicht neue sheets angelegt bekommen, sondern alle in einem zusammenfassen! die überschrift jedoch nur einmal, da die immer gleich ist!
gruß
benny
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

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


Schritt-für-Schritt-Anleitung

Wenn du mit dem Fehler "Index außerhalb des gültigen Bereichs" in Excel VBA konfrontiert bist, kannst du folgende Schritte befolgen, um diesen zu beheben:

  1. Überprüfung der Dateinamen und Blätter: Stelle sicher, dass die Datei, auf die du zugreifen möchtest, tatsächlich "Zusammenfassung.xls" heißt und dass das Arbeitsblatt "Datei" korrekt geschrieben ist.

  2. VBA-Code anpassen: Überprüfe deinen Code, insbesondere die Zeilen, die auf Arbeitsblätter und Arbeitsmappen zugreifen. Achte darauf, dass du die Erweiterung ".xls" hinzufügst, wenn die Datei gespeichert ist.

    Beispiel:

    Workbooks("Zusammenfassung.xls").Sheets("Datei").Cells(i, 1).Value = tmp(i)
  3. Fehlerbehandlung einfügen: Um den Fehler "index außerhalb des gültigen Bereichs" abzufangen, kannst du Fehlerbehandlungsroutine in deinen Code einfügen.

    Beispiel:

    On Error Resume Next
    ' Dein Code hier
    On Error GoTo 0
  4. Debugging im VBA-Editor: Starte den VBA-Editor und setze Haltepunkte, um genau zu sehen, wo der Fehler auftritt.


Häufige Fehler und Lösungen

  • Fehler: Laufzeitfehler 9 – Index außerhalb des gültigen Bereichs: Dieser Fehler tritt häufig auf, wenn du versuchst, auf ein nicht vorhandenes Blatt oder eine nicht vorhandene Arbeitsmappe zuzugreifen. Vergewissere dich, dass die Namen korrekt sind.

  • Problem mit dynamischen Arrays: Wenn du ein dynamisches Array verwendest und versuchst, auf einen Index zuzugreifen, der nicht existiert, kann dieser Fehler auch auftreten. Stelle sicher, dass du die Größe des Arrays korrekt festlegst.

    Beispiel:

    Dim tmp(100) ' Richtige Dimensionierung des Arrays
  • Zugriff auf geschlossene Arbeitsmappen: Wenn du versuchst, auf eine Arbeitsmappe zuzugreifen, die nicht geöffnet ist, führt dies auch zu einem Fehler. Stelle sicher, dass alle benötigten Arbeitsmappen geöffnet sind.


Alternative Methoden

Wenn du weiterhin Probleme mit dem Fehler "index außerhalb des gültigen Bereichs" hast, kannst du alternative Methoden in Betracht ziehen:

  1. Verwendung von Application.Workbooks: Statt direkt auf Workbooks("Name") zuzugreifen, kannst du die Application.Workbooks-Sammlung verwenden.

    Beispiel:

    Dim wb As Workbook
    Set wb = Application.Workbooks("Zusammenfassung.xls")
  2. Komplette Pfadangabe: Verwende den vollständigen Pfad zur Datei, um sicherzustellen, dass Excel die richtige Datei findet.

    Beispiel:

    Workbooks.Open Filename:="C:\Eigene Dateien\Zusammenfassung.xls"

Praktische Beispiele

Hier sind einige praktische Beispiele, wie du den Fehler "index außerhalb des gültigen Bereichs" in Excel VBA vermeiden kannst:

  1. Auslesen von Werten aus einer Liste:

    Dim i As Integer
    For i = 1 To 100
       If Not IsEmpty(Workbooks("Zusammenfassung.xls").Sheets("Datei").Cells(i, 1)) Then
           ' Dein Code hier
       Else
           Exit For
       End If
    Next i
  2. Zusammenführen von Daten in ein einzelnes Blatt: Wenn du Daten aus mehreren Dateien in ein Blatt zusammenführen möchtest, achte darauf, dass du nur einmal die Überschrift schreibst.

    Beispiel:

    Dim ws As Worksheet
    Set ws = Workbooks("Zusammenfassung.xls").Sheets("Zielblatt")
    ws.Cells(1, 1).Value = "Überschrift" ' Nur einmal

Tipps für Profis

  • Verwendung von Option Explicit: Setze Option Explicit am Anfang deines VBA-Codes, um sicherzustellen, dass alle Variablen deklariert werden. Dies hilft, Tippfehler zu vermeiden, die zu Laufzeitfehlern führen können.

  • Regelmäßiges Speichern: Speichere deine Arbeit häufig, um Datenverlust zu vermeiden, besonders wenn du mit VBA arbeitest.

  • Dokumentation und Kommentare: Kommentiere deinen Code, um die Lesbarkeit zu verbessern und um dir später zu helfen, den Code zu verstehen.


FAQ: Häufige Fragen

1. Was bedeutet der Fehler "index außerhalb des gültigen Bereichs"? Der Fehler tritt auf, wenn du versuchst, auf ein Element zuzugreifen, das nicht existiert, z.B. ein nicht vorhandenes Blatt oder eine nicht geöffnete Arbeitsmappe.

2. Wie kann ich den Fehler im VBA-Code abfangen? Du kannst Fehlerbehandlungsroutinen wie On Error Resume Next verwenden, um zu verhindern, dass dein Makro stoppt, wenn ein Fehler auftritt.

3. Was soll ich tun, wenn ich den Fehler immer noch bekomme? Überprüfe alle Dateinamen und Arbeitsblattnamen auf Schreibfehler und stelle sicher, dass alle benötigten Arbeitsmappen geöffnet sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige