Array-Übergabe führt zu Endlosschleife
25.08.2023 12:36:04
Shadowfoxl
ich durchstöbere nun schon seit 4 Tagen das Internet und habe immernoch keinen Lösungsansatz für mein Problem gefunden.
Mein Problem:
Ich lese aus einer geschlossenen Tabelle Informationen aus und schreibe sie in einen 2D-Array (Variant). Das funktioniert auch soweit. Wenn ich den Array allerdings als Ausgabe der Funktion definieren/ rein schreiben möchte, lädt Excel gefühlt endlos (nach max. 3 min hab ich abgebrochen).
Hab Folgendes mehrfach mit diversen Debug.Print Befehlen überprüft:
Die Informationen können in einen 2D Array > dem Array der Funktion geschrieben werden
Sobald der Array der Funktion übergeben wird, gerät das Programm in eine Endlosschleife (wenn ich nur den Array der Funktion ausgeben lassen möchte, wird keine Ausgabe erzeugt und Excel lädt gefühlt endlos; wenn ich vorher zusätzlich den Array mit den übergebenen Informationen ausgeben lasse, wiederholt sich die Ausgabe gefühlt endlos; wenn ich nur den Array mit den übergebenen Informationen ausgeben lasse, klappt alles Einwandfrei)
Ziel ist:
Ich möchte den Array in einer anderen Funktion aufrufen können um die Informationen darin mit den an die Funktion übergebenen Funktionen zu vergleichen.
Der Pseudocode sieht folgender Maßen aus:
'Funktion die die Tabelle ausließt und in den Array schreibt
Public Function GetInformationen() as Variant
InfoPfad="C:\Test\...\"
InfoName="Excel1.xlsx"
InfoBlatt="Tabelle1"
Dim InformationenArray as Variant
ReDim InformationenArray(2 To 50, 1 To 7)
For x=2 To 50
Zeile="R"&x
For y=1 To 7
Spalte="C"&y
InformationenArray(x,y)=ExecuteExcel4Makro("'" & InfoPfad & "[" & InfoName & "]" & InfoBlatt & "'!" & Zeile & Spalte)
Next
Next
'mit dem folgenden Befehl läut es in eine Endlosschleife
GetInformationen=InformationenArray
End Function
Ich habe schon versucht die Informationen der Tabelle direkt in die Funktionsausgabe laden zu lassen, den GetInformationen Array genauer/ neu zu definieren, GetInformationen(x,y)=InformationenArray(x,y) so und mit For-Schleifen zu beschreiben und vieles mehr. Auch der Versuch den Array mit den übergebenen Informationen in der 2. Funktion direkt aufzurufen ist mir nicht gelungen.
In der folgenden Funktion möchte ich den Array folgender Maßen aufrufen:
Function Vergleich(Kommentar)
'...
Dim KommentarVergleich As Variant
KommentarVergleich=GetInformationen()
...
End Function
Da ich diese Funktion aus einem Excel Sheet heraus aufrufen und dabei die Informationen aus einer anderen Zelle übertragen möchte, scheint mir die Option mit ByVal nicht möglich zu sein. Lasse mich hier aber auch gerne korrigieren.
Hoffe ihr könnt mir weiterhelfen.