andere Darstellung nach Erreichen des Sprungzieles?

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

weinstein
*
Beiträge: 11
Registriert: So, 11.05.2008 15:18

andere Darstellung nach Erreichen des Sprungzieles?

Beitrag von weinstein »

Hallo,

immer wenn ich in einer langen Tabelle ein Sprungziel ansteuere, wird dieses Sprungziel in die Mitte des Fensters gerückt. Ich brauche aber eine Funktion die es mir erlaubt, das Sprungziel ganz oben darzustellen.
Ich habe eine lange Tabelle, in der unter jedem Wochentag eine unterschiedlich lange Reihe von Einträgen steht. Wegen der Übersichtlichkeit sollte die Titelzeile immer an oberster Stelle stehen, hier ist auch meine Sprungmarke. Die Sprungmarke weiter unten zu plazieren funktioniert nicht, weil unterschiedliche Bildschirme zur Anwendung kommen und das Calc-Fenster unterschiedlich hoch sein kann.
Siehe Bild, der schwarze Punkt kennzeichnet meine Sprungmarke.

Weiß jemand einen Trick oder eine Funktion, die mir weiter hilft?
Gruß, weinstein
Dateianhänge
Die Datum-Zeile erscheint leider immer mitten im Fenster
Die Datum-Zeile erscheint leider immer mitten im Fenster
080818003250_1.jpg (36.03 KiB) 477 mal betrachtet
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: andere Darstellung nach Erreichen des Sprungzieles?

Beitrag von komma4 »

Du erzeugst einen ViewCursor, und bestimmst mit ihm das Blatt und die erste sichtbare Spalte/Zeile:

Code: Alles auswählen

oBlatt = ThisComponent.Sheets().getByName( "aufstellung" )
oViewContr =  ThisComponent.getCurrentController()

With oViewContr
 .setActiveSheet( oBlatt )
 .setFirstVisibleColumn( 0 )
 .setFirstVisibleRow( 572 ) 
End With
Hilft das weiter?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
weinstein
*
Beiträge: 11
Registriert: So, 11.05.2008 15:18

Re: andere Darstellung nach Erreichen des Sprungzieles?

Beitrag von weinstein »

Hallo Winfried,

ganz herzlichen Dank für deine schnelle Antwort.
Leider bin ich ziemlich doof und weiss nicht, was ich mit dem Code machen soll. Muss ich den in ein Makro einfügen oder damit ein Makro erzeugen? Was ist ein ViewCursor und wie erzeuge ich ihn? Die HIlfe von OOO kennt das Wort nicht (ich auch nicht).
Ich benutze die Windows-Version von OOO 2.4.1 (XP prof)

Gruß, weinstein
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: andere Darstellung nach Erreichen des Sprungzieles?

Beitrag von komma4 »

mmh, bei Deiner Frage nach "Tricks" brach bei mir sofort die Makroantwort aus...

ja: erstelle ein neues Makro-Modul (zum Dokument, wo Du es brauchst) und kopiere den Code (Wiki). Stelle ein Sub springe_A573 voran und ein End Sub hinterdran.

Nun tauschst Du den Namen Deines Tabellenblatts noch aus (im Code aufstellung - und fertig.


Damit hast Du schon ein lauffähiges Makro (den viewcursor erzeugt es dann selbst):

Code: Alles auswählen

Sub springe_A573
    oBlatt = ThisComponent.Sheets().getByName( "aufstellung" )
    oViewContr =  ThisComponent.getCurrentController()

    With oViewContr
    .setActiveSheet( oBlatt )
    .setFirstVisibleColumn( 0 )
    .setFirstVisibleRow( 572 )
    End With
End Sub
DIe Spalten-/Zeilen-Nummern sind Indices und fangen bei Null an, deshalb wird bei obigen Werten "A573" angezeigt.

Das Makro wird dann einer Tastenkombination oder Schaltfläche zugewiesen: mindestens in den neueren 2.x-Versionen geht das auch pro Dokument zu speichern.


HIlft das - und verzeihst Du mir die Makroantwort?!
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
weinstein
*
Beiträge: 11
Registriert: So, 11.05.2008 15:18

Re: andere Darstellung nach Erreichen des Sprungzieles?

Beitrag von weinstein »

Hallo Winfried,

entschuldige, dass ich mich erst jetzt melde, hatte leider bis eben keine Zeit, das auszuprobieren.
Das klappt schon mal super, ganz herzlichen Dank!

Jetzt habe ich noch das Problem, dass ich ungerne 60 Makros definieren möchte, um zu den einzelnen Tagen zu springen.
Besser wäre, wenn man zu einem bestimmten Zeichen springen könnte (z.B. zum nächsten schwarzen Viereck vor dem B, oder zu irgendeinem anderen eindeutigen Zeichen) und diese Zeile als oberstes angezeigt wird. Kannst du mir dabei nochmal helfen?

Leider habe ich noch keine Erfahrung in der Makroprogrammierung, würde aber gerne mehr lernen.
Gibt es irgendwo ein Handbuch dazu, am besten online?

Gruß, weinstein
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: andere Darstellung nach Erreichen des Sprungzieles?

Beitrag von komma4 »

Hallo weinstein,

Basic lernen: erstes sticky Posting im BASIC-Bereich.

zum "Sprungproblem": wie "springst" Du auf einen solchen Tag? würde es reichen, nach Deinem Sprung jeweils 3 (?) Zeilen nach oben zu scrollen?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
weinstein
*
Beiträge: 11
Registriert: So, 11.05.2008 15:18

Re: andere Darstellung nach Erreichen des Sprungzieles?

Beitrag von weinstein »

Hallo Winfried,
komma4 hat geschrieben:wie "springst" Du auf einen solchen Tag? würde es reichen, nach Deinem Sprung jeweils 3 (?) Zeilen nach oben zu scrollen?
Scrollen alleine reicht nicht, da die Tabelle auf Montoren mit verschiedenen Auflösungen geöffnet wird, die oberste Zeile aber immer gleich sein sollte. Es wäre als Notlösung möglich.

Gruß, weinstein
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: andere Darstellung nach Erreichen des Sprungzieles?

Beitrag von komma4 »

OK, anders gefragt:

wie soll ein Makro wissen können, ob es zum 17.11.2007 oder zum 03.03.2008 springen soll?

Wie "springst" Du bislang?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
weinstein
*
Beiträge: 11
Registriert: So, 11.05.2008 15:18

Re: andere Darstellung nach Erreichen des Sprungzieles?

Beitrag von weinstein »

Ich habe es zumindest geschafft, dass die Zeile, in der der Cursor ist, per Klick auf das Makro in die erste Zeile verschoben wird:

function getRow() as String
dim oSel as Object
dim oDesktop as Object
dim oAdr as Object
oDesktop = createUnoService( "com.sun.star.frame.Desktop" )
oSel = oDesktop.CurrentFrame.Controller.Selection
oAdr = oSel.CellAddress
getRow = oAdr.Row
end function

sub springe_A573
rem ----------------------------------------------------------------------
rem define variables
rem ----------------------------------------------------------------------
rem get access to the document
oBlatt = ThisComponent.Sheets().getByName( "B_Terminplan" )
oViewContr = ThisComponent.getCurrentController()
rem ----------------------------------------------------------------------
With oViewContr
.setActiveSheet( oBlatt )
.setFirstVisibleColumn( 0 )
.setFirstVisibleRow( getRow )
End With
end sub


Jetzt müsste man das nur noch in die Suche nach der Zeile einbauen ...
Gruß, weinstein
weinstein
*
Beiträge: 11
Registriert: So, 11.05.2008 15:18

Re: andere Darstellung nach Erreichen des Sprungzieles?

Beitrag von weinstein »

Hallo Winfried,

ich habe es jetzt alleine hingekriegt, indem ich das eben beschriebenen Funktionen in das Makro "Springe zum nächsten Tag" eingebaut habe.
Vielen Dank für deine Hilfe und Anregungen!

Gruß, weinstein
Antworten