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

Forumthread: Index liegt ausserhalb des gültigen Bereichs

Index liegt ausserhalb des gültigen Bereichs
Frank
Hallo allerseits,
ich überprüfe mit folgendem Makroteil, ob ein Workbook geöffnet ist und öffne es, wenn nicht:
Set ExcelApp = GetObject(, "Excel.Application")
Set mydocs = ExcelApp.Workbooks
For Each x In mydocs
If x.Name = "Übersicht Projekte aktuell_Angebote.xls" Then GoTo WorkbookOpen
Next x
Workbooks.Open Filename:= _
"F:\04_PSP-A26\Projektbearbeitung\Übersicht Projekte aktuell_Angebote.xls"
Set x = Workbooks("Übersicht Projekte aktuell_Angebote.xls")
WorkbookOpen:
x.Activate

Solange das gesuchte WB zu ist, oder es im selben Excel-Fenster geöffnet ist, wie das aktuelle WB, funktioniert das auch prima. Sobald "Übersicht Projekte aktuell_Angebote.xls" aber in einem anderen Fenster geöffnet ist, kommt o. g. Fehlermeldung. Wo liegt mein Fehler?
Zum Hintergrund: Da ich im Büro mit zwei Bildschirmen arbeite, habe ich eingestellt, das Excel jedes neu geöffnete File in einem neuen Fenster öffnet, da ich sehr oft Tabellen vergleichen, bzw. von einer in die andere kopieren muss.
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Index liegt ausserhalb des gültigen Bereichs
29.03.2012 15:02:37
Reinhard
Hallo Frank,
mir scheint du hast verschiedene Excelinstanzen geöffnet. Das erklärt mir aber noch nicht den Fehler.
Gib hier mal Excelinstanz oben links ein bei Schnellsuche. In den Treffern findest du Code
von Nepumuk wie man auf andere Instanzen zugreifen kann. Wie man da nun in frenmden Instanzen
nach Mappen suchen kann weiß ich nicht, Frage noch offen.
Gruß
Reinhard
Anzeige
AW: Index liegt ausserhalb des gültigen Bereichs
29.03.2012 15:12:45
Frank
Danke für den Tipp,
in den Code muss ich mich erst mal reinlesen. Und ja, ich meinte eine neue Excelinstanz.
Gruß
Frank
göffnetete Mappen in andere Excel Instanzen suchen
29.03.2012 15:16:22
Reinhard
Hallo Frank,
ich habe den Betreff geändert. Und wieder das Häkchen bei "Frage noch offen" gesetzt.
Gruß
Reinhard
AW: Index liegt ausserhalb des gültigen Bereichs
31.03.2012 18:13:00
Tino
Hallo,
evtl. kannst Du hiermit was anfangen,
habe zwar kein xl2010 den Fensterhandle sollte die Version aber schon kennen.
Private Declare Function SetForegroundWindow Lib "user32" _
(ByVal hwnd As Long) As Long

Sub test()
Dim strFilePath$
Dim booIsOben As Boolean
Dim xlWBEx As Workbook
'Pfad zur Datei 
strFilePath = "F:\04_PSP-A26\Projektbearbeitung\Übersicht Projekte aktuell_Angebote.xls"

'Prüfen ob Datei geöffnet 
On Error Resume Next
Open strFilePath For Binary Access Read Lock Read As #1
Close #1
booIsOben = Err.Number <> 0
Err.Clear
On Error GoTo 0

If Not booIsOben Then
    'nicht offen, Datei öffnen 
    Set xlWBEx = Workbooks.Open(strFilePath)
Else
    'Datei offen, xlWBEx die Datei zuweisen 
    Set xlWBEx = CreateObject(strFilePath)
End If


xlWBEx.Application.WindowState = xlMaximized
SetForegroundWindow xlWBEx.Application.hwnd
End Sub
Gruß Tino
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

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


Schritt-für-Schritt-Anleitung

Um das Problem "Index außerhalb des gültigen Bereichs" in Excel zu beheben, kannst du folgende Schritte durchführen:

  1. Überprüfe die Excel-Instanzen: Stelle sicher, dass du in der richtigen Excel-Instanz arbeitest. Wenn du mehrere Excel-Instanzen geöffnet hast, kann es zu Problemen kommen, wenn du auf Arbeitsmappen zugreifen möchtest, die in einer anderen Instanz geöffnet sind.

  2. Makro anpassen: Verwende den folgenden VBA-Code, um zu prüfen, ob die Datei bereits geöffnet ist und sie gegebenenfalls zu öffnen. Dieser Code berücksichtigt, in welcher Instanz Excel läuft:

    Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
    
    Sub OpenWorkbook()
       Dim strFilePath As String
       Dim xlWBEx As Workbook
       strFilePath = "F:\04_PSP-A26\Projektbearbeitung\Übersicht Projekte aktuell_Angebote.xls"
    
       On Error Resume Next
       Open strFilePath For Binary Access Read Lock Read As #1
       Close #1
    
       If Err.Number <> 0 Then
           ' Datei ist nicht geöffnet
           Set xlWBEx = Workbooks.Open(strFilePath)
       Else
           ' Datei ist bereits geöffnet
           Set xlWBEx = Workbooks("Übersicht Projekte aktuell_Angebote.xls")
       End If
    
       xlWBEx.Application.WindowState = xlMaximized
       SetForegroundWindow xlWBEx.Application.hwnd
    End Sub
  3. Testen: Führe das Makro aus und teste, ob du die Arbeitsmappe ohne Fehlermeldungen öffnen kannst.


Häufige Fehler und Lösungen

  • Fehler: "Index außerhalb des gültigen Bereichs": Dieser Fehler tritt häufig auf, wenn versucht wird, auf ein Objekt zuzugreifen, das nicht existiert oder nicht in der richtigen Excel-Instanz geöffnet ist.

    Lösung: Überprüfe den Namen der Arbeitsmappe und stelle sicher, dass sie genau so geschrieben ist, wie sie in Excel angezeigt wird.

  • Fehler bei der Verwendung von Workbooks.Open: Wenn die Datei nicht geöffnet werden kann, könnte der Pfad falsch sein oder die Datei könnte bereits in einer anderen Instanz geöffnet sein.

    Lösung: Stelle sicher, dass der Pfad zur Datei korrekt ist. Verwende die oben gezeigte Methode, um die Datei ordnungsgemäß zu prüfen und zu öffnen.


Alternative Methoden

  1. Verwendung von GetObject: Anstatt Workbooks.Open zu verwenden, kannst du auch GetObject verwenden, um auf eine bereits geöffnete Arbeitsmappe zuzugreifen:

    On Error Resume Next
    Set xlWBEx = GetObject("F:\04_PSP-A26\Projektbearbeitung\Übersicht Projekte aktuell_Angebote.xls")
    If xlWBEx Is Nothing Then
       Set xlWBEx = Workbooks.Open("F:\04_PSP-A26\Projektbearbeitung\Übersicht Projekte aktuell_Angebote.xls")
    End If
  2. Verwendung von Application.Workbooks: Du kannst auch durch die Application.Workbooks-Sammlung iterieren, um zu überprüfen, ob die Datei offen ist.


Praktische Beispiele

Hier sind einige Szenarien, in denen der Fehler "Index außerhalb des gültigen Bereichs" auftreten könnte, und die dazugehörigen Lösungen:

  • Beispiel 1: Du arbeitest an einem Projekt mit mehreren Excel-Instanzen und versuchst, eine Arbeitsmappe zu aktivieren, die in einer anderen Instanz geöffnet ist.

    Lösung: Nutze den angepassten VBA-Code, um die Arbeitsmappe korrekt zu referenzieren.

  • Beispiel 2: Du hast einen Fehler beim Import von Daten aus Access und erhältst die Meldung "index außerhalb des gültigen bereichs access".

    Lösung: Überprüfe die Abfrage und stelle sicher, dass die Tabellen- und Feldnamen korrekt sind.


Tipps für Profis

  • Verwende Exception Handling: Implementiere On Error Resume Next und On Error GoTo 0, um Fehler im VBA-Code besser zu handhaben und um zu verhindern, dass dein Makro bei einem Fehler stoppt.

  • Arbeite mit Variablen: Definiere Variablen klar und nutze sie, um die Lesbarkeit des Codes zu verbessern und Fehler zu minimieren.

  • Regelmäßige Tests: Teste regelmäßig deinen Code, insbesondere nach Änderungen, um sicherzustellen, dass alles wie erwartet funktioniert.


FAQ: Häufige Fragen

1. Warum erhalte ich die Fehlermeldung "Index außerhalb des gültigen Bereichs"? Diese Fehlermeldung tritt auf, wenn du versuchst, auf ein Element zuzugreifen, das nicht existiert oder nicht in der aktuellen Excel-Instanz verfügbar ist.

2. Was kann ich tun, wenn meine Excel-Datei nicht geöffnet werden kann? Überprüfe, ob die Datei möglicherweise bereits in einer anderen Excel-Instanz geöffnet ist, und verwende den oben gezeigten VBA-Code, um die Datei korrekt zu öffnen oder darauf zuzugreifen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige