mreske
Goto Top

Laufzeitfehler 9: Index ausserhalb des gültigen Bereichs

Hallo zusammen,

ich habe hier ein Problem, das ich trotz langer Suche im Netz bisher nicht lösen konnte.

In der Tabelle "Ziel" der Datei "frm_Ziel.xlsm" habe ich eine Schaltfläche zum Öffnen der Userform (uf_Test).
Beim klicken auf die Schaltfläche soll die UF geöffnet werden und die Daten aus der Tabelle (tbl_Funktionen.xlsx) in eine Listbox der UF geladen werden.

Bei meinem Rechner (Excel 2010) funktioniert das auch reibungslos
Bei einem anderen Rechnger (ebenfalls office 2010) kommt aber die Fehlermeldung "Laufzeitfehler 9: Index ausserhalb des gültigen Bereichs"
Dort wird vorher zwar auch die Quelltabelle geöffnet und die Daten in die Zieltabelle geschrieben.
Nur geschlossen wird die Quelltabelle nicht und es erscheint sofort die Fehlermeldung.

Von beiden Rechnern aus wird auf dieselben Dateien zugefriffen.

Hat vielleicht jemand eine Idee warum das auf einem Rechner läuft und auf einem anderen nicht?

Private Sub UserForm_Initialize()
Dim ListBoxTmp as Variant 'auch mit "as String" funktioniert es nicht  
Dim uf As Object
Set uf = uf_Test

'Quelle öffnen  
strgWkbName = "tbl_Funktionen.xlsx"  
strgTabName = "Funktionen"  
strgLbxName = "lbxFunkt"  

strPath = ActiveWorkbook.Path
Set wbkExcel = Excel.Workbooks.Open(strPath & "\" & strgWkbName, ReadOnly:=True)  

Beschriebenen Bereich ermitteln
'LetzteZeile in Quelle  
lngLetzteZeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
lngErsteLeereZeile = lngLetzteZeile + 1
'LetzteSpalte in Quelle  
intLetzteSpalte = ActiveSheet.Cells(1, 256).End(xlToLeft).Column

Daten von Quelle kopieren
ActiveSheet.Cells.Select
Selection.Copy

Kopierte Daten in Zieltabelle (TempLbxTab) einfügen
Windows("frm_Ziel.xlsm").Activate  
Sheets("TempLbxTab").Select  

Cells.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

'Listbox in Userform mit den Daten aus TempLbxTab füllen  
Dim ListBoxTmp As Variant
Set objLbx = uf.lbxFunkt 
ListBoxTmp = Workbooks("frm_Ziel").Sheets("TempLbxTab").Range(Cells(1, 1), Cells(lngLetzteZeile, intLetzteSpalte))   
objLbx.List = ListBoxTmp
Windows("frm_Ziel.xlsm").Activate  
Sheets("Ziel").Select  

'Quelle wieder schließen (ohne zu spreichern)  
Application.DisplayAlerts = False
Windows(strgWkbName).Activate
ActiveWindow.Close savechanges:=False
Application.DisplayAlerts = True

'Gesamte Listbox als Array  
Dim arrDatalbxFunkt as Variant
arrDatalbxFunkt = uf.lbxFunkt.List

End Sub

Danke im Voraus.
Gruß

Content-ID: 3100420256

Url: https://administrator.de/contentid/3100420256

Ausgedruckt am: 21.11.2024 um 22:11 Uhr

Pjordorf
Lösung Pjordorf 18.06.2022 aktualisiert um 00:45:01 Uhr
Goto Top
mreske
mreske 20.06.2022 um 13:08:32 Uhr
Goto Top
Hallo Peter,

danke für die Antwort.

Ich habe die Stelle gefunden, ab der die Fehlermeldung erscheint:

Und zwar Zeile 36 im Code oben:
ListBoxTmp = Workbooks("frm_Ziel").Sheets("TempLbxTab").Range(Cells(1, 1), Cells(lngLetzteZeile, intLetzteSpalte))

Also genau an der Stelle, wo ich den Bereich in der Tabelle TempLbxTab als Variable definiere.

Die Variable ListBoxTmp habe ich als Variant deklariert (die Fehlermeldung kommt auch bei "as String").
Was mich halt sehr wundert ist, dass es auf einem Rechner einwandfrei läuft und auf anderen nicht.

Da komme ich nicht weiter.

Gruß
mreske
mreske 20.06.2022 um 13:19:31 Uhr
Goto Top
Ich habe die Lösung herausgefunden.
Vor Zeile 36 folgender Code, dann funktioniert es:

Sheets("TempLbxTab").Select  
ActiveSheet.Range(Cells(1, 1), Cells(lngLetzteZeile, intLetzteSpalte)).Select
ListBoxTmp = ActiveSheet.Range(Cells(1, 1), Cells(lngLetzteZeile, intLetzteSpalte))


Gruß