Python Fokus auf letzte Zelle mit Daten

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Python Fokus auf letzte Zelle mit Daten

Re: Python Fokus auf letzte Zelle mit Daten

von Karolus » Sa, 24.09.2022 09:27

Hallo
Um noch mal zu verdeutlichen was ich hier mit ausschliesslich LO_Api meine:

Tausche im Quelltext oben:
def durch sub nimm den : am Ende der Signatur raus, und schreibe unten drunter:
end sub →→ fertig ist das Basic-aquivalent.
(die einzige native python-funktion im code max gibts halt auch in Basic.)

Re: Python Fokus auf letzte Zelle mit Daten

von rammi22 » Fr, 23.09.2022 18:27

Karolus hat geschrieben: Fr, 23.09.2022 11:32

Code: Alles auswählen

########################
## FOCUS ON LAST DATA ##
########################
def setFocusToEndOfUsedArea(controller, sheet, cursor):
    cursor.gotoEndOfUsedArea(False)
    address = cursor.RangeAddress
    col_index, row_index = address.StartColumn, address.StartRow
    controller.setFirstVisibleColumn(max(col_index-3, 0))
    controller.setFirstVisibleRow(max(row_index-5, 0))

    controller.select(cursor)
Danke

Re: Python Fokus auf letzte Zelle mit Daten

von Karolus » Fr, 23.09.2022 11:32

Hallo
Vor wenigen Tagen hast du mich (PN) gefragt und ich hab dir den Ratschlag gegeben dich zunächst AUSSCHLIESSLICH mit python zu beschäftigen, ohne irgendwie im Kontext zu LO.
Jetzt machst du genau das Gegenteil: du beschäftigst dich ausschliesslich mit LO-Api-geschichten!!

Zur Frage: Was hindert den Benutzer, dessen Anwesenheit im Kontext ja gegeben ist, die Tastenkombination ctrl end zu benutzen?


Zum Code:
du postest eine Funktion die jetzt isoliert betrachtet von andern nicht direkt getestet werden kann, das ist ungeschickt weil wir uns den aufrufenden Code dazudenken müssen.

Du popelst auf komische Weise nochmal ``cell`` zusammen obwohl ``cursor`` an der Stelle Objekt-gleich ist.

Code: Alles auswählen

########################
## FOCUS ON LAST DATA ##
########################
def setFocusToEndOfUsedArea(controller, sheet, cursor):
    cursor.gotoEndOfUsedArea(False)
    address = cursor.RangeAddress
    col_index, row_index = address.StartColumn, address.StartRow
    controller.setFirstVisibleColumn(max(col_index-3, 0))
    controller.setFirstVisibleRow(max(row_index-5, 0))

    controller.select(cursor)

Python Fokus auf letzte Zelle mit Daten

von rammi22 » Fr, 23.09.2022 10:00

Hallo,

ich will den Fokus auf die letzte Zelle mit Daten zu setzen mittels eines Python-Makro.

Also "Ctrl + End":
Code Basic

Code: Alles auswählen

REM  *****  BASIC  *****

Sub Main

End Sub


sub Macro1
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Sel"
args1(0).Value = false

dispatcher.executeDispatch(document, ".uno:GoToEndOfData", "", 0, args1())


end sub
Code Python

Code: Alles auswählen

########################
## FOCUS ON LAST DATA ##
########################
def setFocusToEndOfUsedArea(controller, sheet, cursor):
    cursor.gotoEndOfUsedArea(False)
    address = cursor.RangeAddress
    cell = sheet.getCellByPosition(address.EndColumn, address.EndRow)

    controller.select(cell)
Hiermit wird die letzte Zelle mit Daten markiert, aber der Fokus verändert sich nicht (scrollt nicht zur markierten Zelle).

Was muss da noch konfiguriert werden?

Nach oben