Ich möchte ein Array öffentlich deklarieren, damit ich dessen Daten in mehreren Makros eines Moduls verwenden kann.
Das Array ist allerdings auch als Struktur deklariert. Nun finde ich keine Möglichkeit dieses Array in einem Makro zu redimensionieren.
Type PunkteType
row as Long
Pnr as Variant
dRW as Double
dHW as Double
cluster()
End Type
Public Punkte() as PunkteType
sub PZ1berechnen
[...]
PunkteAnz = lst.getItemCount() + 4
redim Punkte(PunkteAnz) as PunkteType
[...]
end sub
Kann mir jemand weiterhelfen wie ich das umsetzen kann bzw. wo mein Fehler liegt.
was hälst Du denn davon wenn Du die Public deklaration ganz am anfang des Moduls und zwar in den ersten Zeilen oberhalb der ersten Sub, anstatt mittendrin ausführst?
Ich weiß jetzt aber nicht auf die schnelle ob das dein Problem löst, da ungetestet.
Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.
Vielen Dank, jetzt gibt es kein Problem mehr. Die Public-deklaration geschieht bereits am Anfang. Mit dem Zusatz Preserve funktioniert es jetzt. Was ich jetzt nicht verstehe ist, dass ich Preserve bei Arrays immer dazu nutze (und ich habe gedacht, dies ist auch der Sinn) damit die Daten im Array erhalten bleiben. Warum bewirkt es dann bei Typen, dass das Array geleert wird?
Bergkaffee hat geschrieben:Was ich jetzt nicht verstehe ist, dass ich Preserve bei Arrays immer dazu nutze (und ich habe gedacht, dies ist auch der Sinn) damit die Daten im Array erhalten bleiben.
Das ist normalerweise der Sinn, ja.
Bergkaffee hat geschrieben:Warum bewirkt es dann bei Typen, dass das Array geleert wird?
Bei mir wird das Array nicht geleert, sondern (wie gewünscht?) nur neu dimensioniert, vorhandene Einträge bleiben erhalten.
sub PZ1berechnen
[...]
PunkteAnz = lst.getItemCount() + 4
RedimMyTypeArray(Punkte,PunkteAnz)
[...]
end sub
Ich habe allerdings selber nur ganz am Anfang, als ich das erste Mal über die User Defined Types gestolpert bin, ein wenig damit herumgespielt, in der praktischen Arbeit habe ich die nie verwendet. Sehr wahrscheinlich also, dass es da auch andere / bessere Wege für gibt.