get data array
Verfasst: So, 17.08.2008 12:47
Hallo zusammen,
ich bin dabei, ein Zinsstaffelprogramm zu schreiben. Dies funktioniert auch soweit. Da ich allerdings bei jeder Buchung das Ergebnis sofort in das Tabellenblatt mit dem Ergebnis schreibe, dauert die Berechnung sehr lange. Ich habe nun den Tipp erhalten, mit get data array und set data array zu arbeiten.
Ich kenne mich damit jedoch nicht aus und bin leider auch aus dem Dokument und den Beispielen von Andrew Pitonyak nicht besonders schlau geworden.
Zunächst müsste die Daten aus einem Daten-Tabellenblatt in ein Array einlesen und mit diesen Daten weiterarbeiten (Zinssatz, zu buchende Beträge, etc.).
Die auszugebenden Daten haben aber natürlich ein ganz anderes Array-Raster als die Ursprungsdaten. Ich produziere ja neue Daten und verändere nicht nur die alten.
Ich habe es folgendermaßen versucht:
Sub mitarrayrechnen()
x = ThisComponent.Sheets().getByIndex(0).getCellRangeByName("A1:A10000")
x2 = ThisComponent.Sheets().getByIndex(0).getCellRangeByName("B1:B10000")
Dim daten()
Dim z(10000)
daten() = x.getDataArray()
For i = LBound(daten()) To UBound(daten())
a = daten(i)
z(i)=a*2
Next
x2.setDataArray(z())
End Sub
Dabei bekomme ich die Fehlermeldung, dass die Objektvariable nicht belegt sei. Da Daten() anscheinend als Objekt behandelt wird, kann ich wohl nicht einfach mit der von mir verwendeten Zeile a=daten(i) den Wert auslesen.
Ich dachte, wenn ich das Array eingelesen habe muss ich statt beispielsweise dem Wert der Zelle(1,2) nur den Wert des Array(1,2) auslesen, um damit weiterrechnen zu können und würde dann Zeit sparen. Tja, falsch gedacht.
Wie muss ich denn nun vorgehen, um den Wert von Beispielsweise Daten(5) auszulesen und unabhängig vom Array mit einer "normalen" Variable damit weiterrechnen zu können? Und wie kann ich die Ergebnisse dann nachher in ein weiteres, neues Array schreiben und dieses in einem anderen Tabellenblatt ausgeben?
Vielen Dank
Lupo
ich bin dabei, ein Zinsstaffelprogramm zu schreiben. Dies funktioniert auch soweit. Da ich allerdings bei jeder Buchung das Ergebnis sofort in das Tabellenblatt mit dem Ergebnis schreibe, dauert die Berechnung sehr lange. Ich habe nun den Tipp erhalten, mit get data array und set data array zu arbeiten.
Ich kenne mich damit jedoch nicht aus und bin leider auch aus dem Dokument und den Beispielen von Andrew Pitonyak nicht besonders schlau geworden.
Zunächst müsste die Daten aus einem Daten-Tabellenblatt in ein Array einlesen und mit diesen Daten weiterarbeiten (Zinssatz, zu buchende Beträge, etc.).
Die auszugebenden Daten haben aber natürlich ein ganz anderes Array-Raster als die Ursprungsdaten. Ich produziere ja neue Daten und verändere nicht nur die alten.
Ich habe es folgendermaßen versucht:
Sub mitarrayrechnen()
x = ThisComponent.Sheets().getByIndex(0).getCellRangeByName("A1:A10000")
x2 = ThisComponent.Sheets().getByIndex(0).getCellRangeByName("B1:B10000")
Dim daten()
Dim z(10000)
daten() = x.getDataArray()
For i = LBound(daten()) To UBound(daten())
a = daten(i)
z(i)=a*2
Next
x2.setDataArray(z())
End Sub
Dabei bekomme ich die Fehlermeldung, dass die Objektvariable nicht belegt sei. Da Daten() anscheinend als Objekt behandelt wird, kann ich wohl nicht einfach mit der von mir verwendeten Zeile a=daten(i) den Wert auslesen.
Ich dachte, wenn ich das Array eingelesen habe muss ich statt beispielsweise dem Wert der Zelle(1,2) nur den Wert des Array(1,2) auslesen, um damit weiterrechnen zu können und würde dann Zeit sparen. Tja, falsch gedacht.
Wie muss ich denn nun vorgehen, um den Wert von Beispielsweise Daten(5) auszulesen und unabhängig vom Array mit einer "normalen" Variable damit weiterrechnen zu können? Und wie kann ich die Ergebnisse dann nachher in ein weiteres, neues Array schreiben und dieses in einem anderen Tabellenblatt ausgeben?
Vielen Dank
Lupo