Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1720to1724
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
Inhaltsverzeichnis

Array und Workbooks

Array und Workbooks
12.11.2019 20:01:06
Tobi@s
Hallo ihr lieben,
ich habe wieder mal ein Problem.
Ausgangslage:
Ich habe eine (oder mehrere) geöffnete Excel-Dateien mit mehreren Tabellenblättern.
Der Nutzer soll über eine UserForm eingeben, welche zwei Spalten er miteinander vergleichen möchte und bei einem entsprechendem Fund des Vergleiches, soll das "Ergebnis" wiederum in eine (freie) Spalte geschrieben werden.
Da es sich hier oft um Spalten mit 5000 - 10000 Zeilen handelt (und somit die Vergleiche in die Millionen gehen) wollte ich das Ganze über Arrays auswerten und am Ende wieder nur das "Ergebnis"-Array in die neue Spalte schreiben.
Der Nutzer sucht sich (Über die UserForm und in Klapplisten) eine (oder zwei verschiedene Datei(en) und dazu (jeweils) ein Tabellenblatt in dieser ausgewählten Datei aus. - (funktioniert).
Weiterhin schreibt er händisch die Spalte(n) hinein, die er ausgewertet haben möchte (alles sicher, dass keine Fehler passieren).
Nun komme ich zum Auswerten sobald der Nutzer auf "Start" klickt.
Mein Code dazu ist folgender:
Dabei ist zu beachten, dass die Variablen nicht auf diese Weise gefüllt werden sondern aus den Steuerelementen der UserForm. Ich habe es nur für den Test angepasst. Es funktioniert aber weder auf die eine noch auf die andere Weise.
Das Programm bricht bei der ersten Zeile (nach " 'Quell- und Ziel-Array erstellen") ab mit der Fehlermeldung 1004 (Anwendungs- oder Objektdefinierter Fehler).
Und ich sehe den Fehler einfach nicht.
Rein theoretisch könnten die Arrays auch eindimensional sein (da jeweils immer nur eine Spalte der Tabelle ins Array soll). Das hat aber auch irgendwie nicht geklappt.
Mit "Liste" und Msgbox - das ist nur Lückenfüller, damit er mir überhaupt etwas anzeigt :-)

Sub Test_Array()
'Q steht für Quelle, Z steht für Ziel, E steht für Ergebnis
Dim wbQ As Workbook, wsQ As Worksheet
Dim wbZ As Workbook, wsZ As Worksheet
Dim wbE As Workbook, wsE As Worksheet
Dim SpalteQ As Integer, EZeileQ As Integer, LZeileQ As Integer
Dim SpalteZ As Integer, EZeileZ As Integer, LZeileZ As Integer
Dim SpalteE As Integer
Dim i
Dim rngQ, rngZ, rngE
Datei = "Gesamt_neu_1007_V 102_25.07.2019.xlsm"
Tabelle = "Liste"
Set wbQ = Workbooks(Datei)
Set wsQ = wbQ.Worksheets(Tabelle)
Set wbZ = Workbooks(Datei)
Set wsZ = wbZ.Worksheets(Tabelle)
Set wbE = Workbooks(Datei)
Set wsE = wbE.Worksheets(Tabelle)
SpalteQ = 7
EZeileQ = 2
LZeileQ = 20
SpalteZ = 8
EZeileZ = 2
LZeileZ = 20
SpalteE = 35
ReDim rngQ(1 To LZeileQ - EZeileQ + 1, 1)
ReDim rngZ(1 To LZeileZ - EZeileZ + 1, 1)
'Quell- und Ziel-Array erstellen
rngQ = wsQ.Range(Cells(EZeileQ, SpalteQ), Cells(LZeileQ, SpalteQ)).Value
rngZ = wsZ.Range(Cells(EZeileZ, SpalteZ), Cells(LZeileZ, SpalteZ)).Value
rngE = rngZ 'Im Original wird noch abgeprüft, ob die Größe des Arrays mit rngQ oder rngZ ü _
bereinstimmen muss
Erase rngE
For i = LBound(rngQ, 1) To UBound(rngQ, 1)
Liste = Liste & vbCr & rngQ(i, 1)
Next
MsgBox Liste
End Sub

Wenn noch Fragen sind, einfach zu.
Ansonsten schon mal danke fürs durchlesen :-)
Gruß Tobi@s

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array und Workbooks
12.11.2019 20:10:49
Nepumuk
Hallo Tobias,
lass das ReDim weg. Nur das Ausgabearry musst du dimensionieren.
Gruß
Nepumuk
AW: Array und Workbooks
13.11.2019 14:40:42
Tobi@s
Hallo Nepumuk,
dein Tipp funktioniert einwandfrei.
Danke sehr.
Eine Frage - warum kommt dann aber der Fehler? Was ist der Hintergrund?
Gruß Tobi@s
AW: Array und Workbooks
13.11.2019 15:50:30
Nepumuk
Hallo Tobias,
so müsste es mit ReDim klappen:
ReDim rngQ(1 To LZeileQ - EZeileQ + 1, 1 To 1)
Wenn du nur die 1 angibst, dann bedeutet das 0 To 1
Ist aber nicht notwendig wie du siehst.
Gruß
Nepumuk
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige