ich habe diese Beispieldatei etwas bearbeitet: http://michael-schwimmer.de/vba087.htm
Das Ziel ist es, die RGB Informationen aus varPixelarray("AllPixel") in 3 verschiedene Worksheets "R","G","B" zu schreiben um damit Berechnungen anstellen zu können. varPixelarray("AllPixel") ist 3dimensional (Y,X,[R,G,B]). Mein Versuch es in 2dimensionale Array zu konvertieren erzeugt die neuen Arrays varPixelarray("Red"), varPixelarray("Green"), varPixelarray("Blue"). Diese lassen sich aber nicht in das Worksheet schreiben (Fehler 1004):
'Sheets("R").Range(Sheets("R").Cells(1, 1), Sheets("R").Cells(UBound(varPixelarray("Red"), 2), _
UBound(varPixelarray("Red"), 1))) = varPixelarray("Red")
Stattdessen überführe ich sie mit einer doppelten For To Schleife in neue Arrays, welche sich dann problemlos speichern lassen. Leider dauert diese For To Schleife sehr lange, gerade bei großen Bilddateien. In der Function "ColFromPic" wird die gleiche Schleife ausgeführt, aber dort dauert es nur Augenblicke. Ich vermute, der Pferdefuß ist der Typ der Arrays. "varPixelarray" ist vom Typ "Variant/Byte", aber meine neuen Arrays ("Arr_R", "Arr_G", "Arr_B") sind vom Typ "Variant/Variant".
Warum lässt sich das Array vom Typ Byte nicht in das Worksheet schreiben?
Oder warum ist die For To Schleife in der Function "ColFromPic" so schnell, aber in der Sub "cmdNeueDatei_Click" so langsam?
Hier ist meine bearbeitete Datei: https://www.herber.de/bbs/user/121290.xlsm
Vielen Dank im Vorraus,
Rainer