folgendes Problem:
ich habe verschiedene Listen, in denen ich jeden Wert mit einem Makro bearbeiten muß.
diese Listen können unterschiedlich groß sein, von 1 bis c.a. 20.000 Einträgen
um die geschwindigkeit zu verbessern, lade ich die Werte in eine 2-dimensionale Array-Variable, um sie dann dort zu berarbein, dh. im Prinzip so:
sub Tabelle_bearbeiten()
dim arrArray
dim i as long
'--- Einlesen
arrArray = Cells(1,1).currentregion
'--- Berechnen
for i = 1 to Ubound(arrArray,1)
arrArray(i, 1) = .....'hier folgt dann eine etwas komplexere Berechnung
next
'--- Zurückschreiben
cells(1,1).resize(Ubound(arrArray,1), Ubound(arrArray,2)) = arrArray
End sub
funktioniert soweit auch sehr gut mit einer ausname:
wenn die Tabelle aus genau einer Zelle besteht (was auch vorkommt), wird bei
arrArray = Cells(1,1).currentregion natürlich kein 2-Dimensionals Array-Feld erzeugt, sondern nur eine einfache Variable mit dem Zellwert.
Problem dabei ist, das dann die UBOUND-Funktion nicht einen Fehler erzeugt, weil ja kein Array vorliegt.
Jetzt die Frage, wie kann man erreichen, daß auch bei genau einer Zelle in der Tabelle ein 2-dimensionales Array-Feld erzeugt wird, aber halt nur mit einem Wert (sozusagen ein 1x1-Feld), damit der restliche Teil des Makros wieder funktioniert?
momentan habe ich noch eine IF-Abfrage drin, mit der ich diesen Fall abprüfe, was aber zur Folge hat, daß ich die Programmteile BEARBEITEN und ZURÜCKSCHREIBEN doppelt programmieren muß (einmal für Array und einemal für normale Variable, das möchte halt vermeiden)
Gruß und schönes Wochenende, Daniel