Makro als Sprung zu einer bestimmten Tabellenseite

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Melia
Beiträge: 7
Registriert: Sa, 05.01.2008 09:51

Makro als Sprung zu einer bestimmten Tabellenseite

Beitrag von Melia »

Hallo,

ich versuche eine Schaltfläche mit einem Makro zu hinterlegen, welches ein anderes derselben Datei ansteuert, um danach dort weiterzuarbeiten.
Leider gelingt mit mit dem unten aufgeführten Listing nur ein Sprung zu einer bestimmten Seite als Seitenzahl.

Ich vermute, dass das das ausschlaggebende Moment ist:
args1(0).Name = "Nr"
args1(0).Value = 2

Wenn ich nun aber die Tabellenblätter in ihrer Reihenfolge verändere, verliere ich die Sprungmöglichkeit zu eben dieser bestimmten Seite.
Kann ich das irgendwie ändern? die Seite vielleicht direkt angeben?


Makro:

sub GotoKonto
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 = "Nr"
args1(0).Value = 2



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


end sub



Danke und viele Grüße

Melia
Melia
Beiträge: 7
Registriert: Sa, 05.01.2008 09:51

Re: Makro als Sprung zu einer bestimmten Tabellenseite

Beitrag von Melia »

Hallo,
wahrscheinlich habe ich das richtige gefunden???????

aber wo, an welcher stelle muss ich dann wie den Namen des Tabellenblattes eingeben?


Sub JumpToSheetsName( myDoc as Objekt, sheetsname as String)
myView = myDoc.CurrentController
mySheet = myDoc.Sheets.getByName(sheetsname)
myView.setActiveSheet(mySheet)
End Sub


Ob ich wohl noch einmal eine Erklärung für unwissende erhalten dürfte?

LG

Melia
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Makro als Sprung zu einer bestimmten Tabellenseite

Beitrag von Toxitom »

Hey Melia,

hmm, deine Funktion ist ja "nur" eine "Unterroutine, also etwas, das du aus einem anderen Makro heraus aufrufst.

Es erwartet zwei Parameter: Das Dokument als Objekt, in dem gesprungen werden soll sowie den Namen der Tabelle, auf die gesprungen werden soll. Die folgende Routine ruft deine Funktion uaf und springt zur "Tabelle3", die auch genau so heisst:

Code: Alles auswählen

sub ZurTabelleSpringen
  oDoc = thisComponent
  sTabName = "Tabelle3"
  JumpToSheetsName(oDoc, sTabName)
end sub
Viele Grüße
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Melia
Beiträge: 7
Registriert: Sa, 05.01.2008 09:51

Re: Makro als Sprung zu einer bestimmten Tabellenseite

Beitrag von Melia »

Danke für die Antwort, leider führt sie noch nicht zum Ziel, es scheint doch noch etwas
schwieriger zu sein, als ich dachte :-((

Wenn ich das Makro:

sub ZurTabelleKontoSpringen
oDoc = thisComponent
sTabName = "Konto"
JumpToSheetsName(oDoc, sTabName)
end sub


ausführe, kommt eine Fehlermeldung:

1. Ein blauer Pfeli vor der Zeile "JumpToSheetsName(oDoc, sTabName)"
2. Fehlermeldung: "Basic Laufzeitfehler Sub- oder Funktion Prozedur nicht definiert"

auch eine Änderung de o.g. Zeile (was mache ich nur, ich stokele nur im Duneln herum) in
"JumpToSheetsName(Konto)"
bringt die gleiche Fehlermeldung

Ein Tabellenblatt "Konto" ist allerdings vorhanden.

... vielleicht noch ne Idee?

lg

Melia

PS: habe übrigens OO 2.3.0, keine Ahnung, ob das jetzt als Info wichtig ist.
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Makro als Sprung zu einer bestimmten Tabellenseite

Beitrag von turtle47 »

Hallo Melia,

folgender Code sollte das tun was Du möchtest:

Code: Alles auswählen

Sub Tabellenblatt_auswaehlen
	myDoc = ThisComponent
	myView = myDoc.CurrentController
	mySheet = myDoc.Sheets.getByName("Konto")
	myView.setActiveSheet(mySheet)
End Sub
Viel Erfolg.

Jürgen

Edit: Thomas hatte natürlich auch recht.
Toxitom hat geschrieben:hmm, deine Funktion ist ja "nur" eine "Unterroutine, also etwas, das du aus einem anderen Makro heraus aufrufst.
Es erwartet zwei Parameter: Das Dokument als Objekt, in dem gesprungen werden soll sowie den Namen der Tabelle, auf die gesprungen werden soll. Die folgende Routine ruft deine Funktion uaf und springt zur "Tabelle3", die auch genau so heisst:
Also im Klartext, dieses hier funktioniert genau so:

Code: Alles auswählen

sub ZurTabelleSpringen
  oDoc = thisComponent
  sTabName = "Konto"
  JumpToSheetsName(oDoc, sTabName)
end sub

Sub JumpToSheetsName( myDoc as Objekt, sheetsname as String)
myView = myDoc.CurrentController
mySheet = myDoc.Sheets.getByName(sheetsname)
myView.setActiveSheet(mySheet)
End Sub
Ich habe das hier nur zusammengesetzt was Thomas meint.
Zuletzt geändert von turtle47 am Sa, 05.01.2008 20:35, insgesamt 2-mal geändert.
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Melia
Beiträge: 7
Registriert: Sa, 05.01.2008 09:51

Re: Makro als Sprung zu einer bestimmten Tabellenseite

Beitrag von Melia »

Klasse, es funktioniert super

Vielen Dank und liebe Grüße

Melia
Antworten