🙏 Bitte helfen Sie uns das LibreOffice Forum zu erhalten. 🙏
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🍀 Wir hoffen auf Ihre Unterstützung - vielen Dank!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Calc: Kann man die oberste aktuell angezeigte Zeile/Zelle bestimmen?
Calc: Kann man die oberste aktuell angezeigte Zeile/Zelle bestimmen?
Hallo zusammen,
gibt es eine Möglichkeit, dies per Makro zu tun, also dass man den Wert der aktuell ganz oben angezeigten Zeile/Zelle erhält - auch wenn gescrollt wurde?
Dank euch schon mal!
Ciao
gibt es eine Möglichkeit, dies per Makro zu tun, also dass man den Wert der aktuell ganz oben angezeigten Zeile/Zelle erhält - auch wenn gescrollt wurde?
Dank euch schon mal!
Ciao
Re: Calc: Kann man die oberste aktuell angezeigte Zeile/Zelle bestimmen?
Hallo Reth,
Die Methode zum Lesen der ersten sichtbaren Zeilennummer lautet
getFirstVisibleRow()
und zum übergeben der ersten Zeilenummer an das Fenster
setFirstVisibleRow(long)
Ich hatte genau das selbe Problem und hab die Lösung lange nicht finden können.
Ein wichtiger Tipp zur Lösung war das Buch OOME_deutsch.odt https://www.uni-due.de/~abi070/ooo.html.
Das Objekt auf die die Methode angewendet werden muss, konnte ich dort jedoch nicht finden (selbstredend für erfahrene Programmierer warscheinlich
). Das Objekt konnte ich nur durch Beispiele suchen, und probieren finden. Ich bin da noch sehr unerfahren. Über die Referenz bin ich da nicht drauf gekommen.
Für Fehler/Unübliche Darstellung sorry, das ist mein erster Beitrag
.
Gruß
Ralf
Die Methode zum Lesen der ersten sichtbaren Zeilennummer lautet
getFirstVisibleRow()
Code: Alles auswählen
ErsteSichtbareZeile= ThisComponent.CurrentController.getFirstVisibleRow()
setFirstVisibleRow(long)
Code: Alles auswählen
ThisComponent.CurrentController.setFirstVisibleRow(ErsteSichtbareZeile)
Ein wichtiger Tipp zur Lösung war das Buch OOME_deutsch.odt https://www.uni-due.de/~abi070/ooo.html.
Das Objekt auf die die Methode angewendet werden muss, konnte ich dort jedoch nicht finden (selbstredend für erfahrene Programmierer warscheinlich

Für Fehler/Unübliche Darstellung sorry, das ist mein erster Beitrag

Gruß
Ralf
openSUSE Tumbleweed
Re: Calc: Kann man die oberste aktuell angezeigte Zeile/Zelle bestimmen?
Hallo,
wo möchtest du denn den Wert angezeigt bekommen?
Gruß R
wo möchtest du denn den Wert angezeigt bekommen?
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO
Kann man die oberste aktuell angezeigte Zeile/Zelle bestimmen? PropertyChangeListener
Hallo zusammen,
ich habe leider gerade erst gesehen, das der ursprüngliche Beitrag bereits in 2019 geschrieben wurde.
Egal, ich habe mir Gedanken gemacht und auch eine recht interessante Lösung gefunden.
Mit einem PropertyChangeListener und einer Benutzerdefinierten Funktion.
Der Listener merkt, wenn man scrollt, mit FirstVisibleRow wird die oberste Zeile ermittelt, dann der Inhalt der gewünschten Spalte ausgelesen und in der ersten Zeile des Tabellenblattes, die ich fixiert habe, angezeigt und ggf. weiterverarbeitet.
Wenn man den Cursor nun in den unteren Bereich setzt und auf dem Blatt scrollt, passt sich die oberste Zeile entsprechend an.
Hier der Code:
Beispiel anbei.
Gruß R
ich habe leider gerade erst gesehen, das der ursprüngliche Beitrag bereits in 2019 geschrieben wurde.
Egal, ich habe mir Gedanken gemacht und auch eine recht interessante Lösung gefunden.
Mit einem PropertyChangeListener und einer Benutzerdefinierten Funktion.
Der Listener merkt, wenn man scrollt, mit FirstVisibleRow wird die oberste Zeile ermittelt, dann der Inhalt der gewünschten Spalte ausgelesen und in der ersten Zeile des Tabellenblattes, die ich fixiert habe, angezeigt und ggf. weiterverarbeitet.
Wenn man den Cursor nun in den unteren Bereich setzt und auf dem Blatt scrollt, passt sich die oberste Zeile entsprechend an.
Hier der Code:
Code: Alles auswählen
global oListener
function Get_Top_Value(sColumn) as double
on error goto errorhandler
oContoller = ThisComponent.CurrentController
nRow = oContoller.FirstVisibleRow
oSheet = ThisComponent.Sheets.getbyName("Tabelle1")'Name der Tabelle
oColumn = oSheet.Columns.Getbyname(sColumn)'Name der Spalte
oCell = oColumn.getcellbyPosition(0,nRow)
Get_Top_Value = oCell.Value
errorhandler:
End function
Sub CreateListener
oListener = CreateUnoListener( "PropertyChangeListener_", "com.sun.star.beans.XPropertyChangeListener" )
ThisComponent.CurrentController.addPropertyChangeListener("",oListener)
End Sub
Sub RemoveListener()
ThisComponent.CurrentController.removePropertyChangeListener("",oListener)
End Sub
Sub PropertyChangeListener_propertyChange(oEvent)
ThisComponent.calculateAll
End Sub
Sub PropertyChangeListener_disposing
End Sub
Gruß R
- Dateianhänge
-
- GetTopValue_Property_Change_Listener.ods
- (16.28 KiB) 131-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Calc: Kann man die oberste aktuell angezeigte Zeile/Zelle bestimmen?
Hallo R,
das erscheint mir eine exactere Lösung, zu dem was Reth da angefragt hatte, zu sein.
Ich hatte nicht daran gedacht darauf hin zu weisen, das das schon ein älterer Beitrag war.
Ich hab Deinen Code nicht zum Laufen bekommen. Der hat für mich zu viel Tiefgang.
Ich wäre froh, wenn ich hinreichend systematisch darauf kommen würde, warum ich das Objekt CurrentController und nicht zum Beispiel CurrentDocument oder welches auch immer ansprechen muss. Vielleicht steht die Vorgehensweise ja im Pitoniak irgendwo. Ich habs noch nicht durch gelesen.
Für mich war der Beitrag trotzdem sehr Aufschlussreich (Events etc.). Vielen Dank von meiner Seite!
Gruß Ralf
das erscheint mir eine exactere Lösung, zu dem was Reth da angefragt hatte, zu sein.
Ich hatte nicht daran gedacht darauf hin zu weisen, das das schon ein älterer Beitrag war.
Ich hab Deinen Code nicht zum Laufen bekommen. Der hat für mich zu viel Tiefgang.
Ich wäre froh, wenn ich hinreichend systematisch darauf kommen würde, warum ich das Objekt CurrentController und nicht zum Beispiel CurrentDocument oder welches auch immer ansprechen muss. Vielleicht steht die Vorgehensweise ja im Pitoniak irgendwo. Ich habs noch nicht durch gelesen.
Für mich war der Beitrag trotzdem sehr Aufschlussreich (Events etc.). Vielen Dank von meiner Seite!
Gruß Ralf
openSUSE Tumbleweed
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.