Beiträge von aetti im Thema „LibreOffice Calc Makros“

    Natürlich kannst Du Fragen stellen (PM habe ich leider nicht verstanden).

    Hier noch einige Ergänzungen:

    Zuerst versuchte ich zu verstehen was die Herausforderung ist.

    -> Es gibt eine Datei mit Daten die ergänzt (weitere Zeilen) werden kann und neu berechnet werden soll.

    Im Internet habe ich ein wenig gesucht und dann einige Funktionen zusammengelegt und natürlich getestet!

    Ich habe festgestellt, dass es viele Wege gibt. Vermutlich ist mein Makro nicht immer auf der Autobahn.

    Im "Makro" wird im ersten Teil die letzte leere Zeile des aktuellen Dokuments ermittelt. Dies passiert hier mit der Spalte "B".

    Im zweiten Teil werden dann alle Zeilen bis zur letzten Zeile mit Inhalt in einer Schleife bearbeitet ("Do....").

    Heimtücksich an der Geschichte ist, dass alles mit "0" beginnt.

    Beispiel: oBlatt.getCellByPosition(0, 0) wäre die Zelle A1.

    Zum Testen habe ich ein neues Dokument mit 3 Zeilen und 3 Spalten inklusive Zahleninhalt erstellt.

    Im Dokument unter Extras - Makros - Makros bearbeiten die erwähnten Zeilen eingefügt und das Makro ausgeführt.

    Das Makro "aetti" ist unter "Meine Makros" abgelegt.

    Das wärs im Moment.

    Ich habe einen kleinen Test durchgeführt. Du kannst die folgenden Befehle im LibreOffice Calc unter Makros bearbeiten einfügen:

    SUB aetti

    dim iLetzte as integer

    oBlatt= ThisComponent.CurrentController.getActiveSheet()

    With oBlatt ' Letzte Zeile der Spalte B ermitteln

    x = .Columns(1).queryEmptyCells()

    iLetzte = x(x.Count-1).RangeAddress.StartRow - 1

    End With

    Print "iLetzte:",iLetzte

    dim i as integer

    i = 0

    Do

    print "a:",oBlatt.getCellByPosition(0, i).value

    print "b:",oBlatt.getCellByPosition(1, i).value

    print "c:",oBlatt.getCellByPosition(2, i).value

    oBlatt.getCellByPosition(2, i).value = oBlatt.getCellByPosition(0, i).value + oBlatt.getCellByPosition(1, i).value

    print "c-geändert:",oBlatt.getCellByPosition(2, i).value

    i = i + 1

    Loop While i <= iLetzte

    end sub

    Hinweise:

    Die "print" Befehle habe ich nur zum Testen benutzt.

    Unter Sub kannst Du natürlich aetti ändern :)