Hallo liebe Gemeinde,
ich nutze auf Arbeit OO Calc für eine sehr voluminöse Tabelle, bestehend aus drei relevanten Bereichen:
-
ein Blatt als eine Art „Formular“, in welches Daten eingegeben werden (Airline, Strecke, Klasse, Passagiere und Gepäckstücke)
-
ca 55 Blätter mit Rohdaten (Übergepäckgebühren verschiedener Airlines, unterteilt nach Strecke, Klasse und Art des Ü-Gepäcks [zu viel, zu schwer, zu groß…])
-
eine Art Daten-Blatt, in welchem ich die Quadratur des Kreises realisiert habe! (in je einer Zeile pro Airline stehen alle Gebühren vom korrespondierenden Rohdaten-Blatt (mit Indirekt-Formeln, die sich aus - immer gleichen - Spalten- und Zeilenwerten speisen)
Ich habe zwei relevante Makros, a) zum Löschen der Eingabewerte im Formular, b) um u.U. nicht benötigte Spalten im Formular auszublenden.
Nun zu meinem grundsätzlichen Problem:
Beide Makros sind verdammt langsam, bzw. benötigen ewig bis sie fertig sind.
a) löscht 38 Zellen, b) blendet 34 Spalten aus
Ich wüsste gern, warum die Makros so ewig brauchen, vermute, dass es an den gefühlt 1.000.000 Formeln und Verweisen liegt und ggf. wie ich das beschleunigen kann.
Hier der Code zu a)
sub RESET
call autocalcoff 'automatische Berechnungen ausschalten
Dim Doc As Object
Dim Sheet As Object
Dim Cell As Object
Doc = ThisComponent
Sheet = Doc.Sheets.getbyname(„XBAG“)
view = doc.currentcontroller
csssc = com.sun.star.sheet.CellFlags 'das heißt einfach so, siehe internet-anleitungen
for spalte = 3 to 63 step 2
for zeile = 37 to 49 step 2
if zeile > 43 and spalte = 3 then
zeile = 37
spalte = 5
else if zeile > 43 and spalte = 5 then
zeile = 49
end if
end if
cell = Sheet.getCellByPosition(spalte,zeile)
view.select(cell)
if cell.string „“ then
cellcontent=csssc.STRING + csssc.VALUE + csssc.FORMULA + csssc.string
cell.clearcontents(cellcontent)
end if
if zeile = 49 and spalte