Tabellenblattregister

Hallo Gemeinde *seufz*,

ich habe auf Tabellenblatt 02 (00…01…02…) ein Menü, in welchem eine Auswahl getroffen werden kann. Aufgrund dieser Auswahl ruft Calc beim Klick auf einen Button ein bestimmtes Tabellenblatt auf, von dem man auch per Button wieder zum Formular (TB02) zurück navigieren kann.

Nun möchte ich der Form halber die ganzen 52 Register der anwählbaren Blätter ausblenden, komme allerdings durch Probieren oder Recherchieren im Netz nicht weiter.

Die Funktion Format-Tabelle-Ausblenden ist wider Erwarten nicht anwendbar, da zwar die Blätter ausgeblendet werden, im Folgenden jedoch nicht mehr selektiert/angewählt werden können; es wird das nächste verfügbare, nicht ausgeblendete Blatt aufgerufen!

Wer kann mir dazu hilfreiche Tipps geben? Gern auch per Makro/EventListener, da eh schon vorhanden…

LG, Masl

Hallo Gemeinde *seufz*,

Hallo Marcel,

ich habe auf Tabellenblatt 02 (00…01…02…) ein Menü, in
welchem eine Auswahl getroffen werden kann. Aufgrund dieser
Auswahl ruft Calc beim Klick auf einen Button ein bestimmtes
Tabellenblatt auf, von dem man auch per Button wieder zum
Formular (TB02) zurück navigieren kann.

Vorab: beschriebe bitte kurz, mit welchem Programm Du arbeitest, und auf welchem Stand Du bist. Klick auf Button hört sich an, als hättest Du schon Programmiererfahrung.

Nun möchte ich der Form halber die ganzen 52 Register der
anwählbaren Blätter ausblenden, komme allerdings durch
Probieren oder Recherchieren im Netz nicht weiter.

Leider habe ich keine OOCalc-Erfahrung und die Syntax ist (vermute ich wenigstens) anders als Excel, wo ich mich zu Hause fühle.

Die Funktion Format-Tabelle-Ausblenden ist wider Erwarten
nicht anwendbar, da zwar die Blätter ausgeblendet werden, im
Folgenden jedoch nicht mehr selektiert/angewählt werden
können; es wird das nächste verfügbare, nicht ausgeblendete
Blatt aufgerufen!

Hast Du mal versucht dein Vorgehen mit einem Makro aufzuzeichnen, und dann mit den Wörtern im Makro in der Hilfe zu suchen?

Wer kann mir dazu hilfreiche Tipps geben? Gern auch per
Makro/EventListener, da eh schon vorhanden…

LG, Masl

MfG MwieMichel

Hallo Gemeinde *seufz*,

Hallo Marcel,

ich habe auf Tabellenblatt 02 (00…01…02…) ein Menü, in
welchem eine Auswahl getroffen werden kann. Aufgrund dieser
Auswahl ruft Calc beim Klick auf einen Button ein bestimmtes
Tabellenblatt auf, von dem man auch per Button wieder zum
Formular (TB02) zurück navigieren kann.

Vorab: beschriebe bitte kurz, mit welchem Programm Du
arbeitest, und auf welchem Stand Du bist. Klick auf Button
hört sich an, als hättest Du schon Programmiererfahrung.

OpenOffice Calc, Star Basic. Der Button ist mit einem Makro verknüpft, richtig. Löst aus bei Maustaste losgelassen und funktioniert auch soweit.

Nun möchte ich der Form halber die ganzen 52 Register der
anwählbaren Blätter ausblenden, komme allerdings durch
Probieren oder Recherchieren im Netz nicht weiter.

Leider habe ich keine OOCalc-Erfahrung und die Syntax ist
(vermute ich wenigstens) anders als Excel, wo ich mich zu
Hause fühle.

Bei Excel geht es wohl (lt. einhelliger Meinung im Netz, ein oder mehrere TB auszublenden und sie gleichzeitig per Makro trotzdem noch ansteuern zu können. Bei StarBasic/OO Calc bin ich grad noch auf der Suche nach einer vergleichbaren Lösung.
Leider sind die meisten hier bei WWW eher MS-affin… :wink:

Die Funktion Format-Tabelle-Ausblenden ist wider Erwarten
nicht anwendbar, da zwar die Blätter ausgeblendet werden, im
Folgenden jedoch nicht mehr selektiert/angewählt werden
können; es wird das nächste verfügbare, nicht ausgeblendete
Blatt aufgerufen!

Hast Du mal versucht dein Vorgehen mit einem Makro
aufzuzeichnen, und dann mit den Wörtern im Makro in der Hilfe
zu suchen?

Hast du mal ein Makro bei OO aufgenommen? In Excel ist das eine gute Möglichkeit, wenigstens die grundlegenden Funktionen abzubilden und/oder zu verstehen, in OO gibt es diese Möglichkeit leider nicht, da gibt es nur eine Art Dispatcher-Code, aus dem man so gut wie nichts ableiten kann.

Der Befehl, um den TB-Schutz des aktuellen Blattes zu aktivieren ist in StarBasic

sub schutzan
thiscomponent.sheets().protect("") 'äquvalent zu Currentworkdingens bei Office

Die gleiche(!) Aktion als Makro aufgezeichnet sieht so aus:

sub dispatcher_test
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 = „Protect“
args1(0).Value = true

dispatcher.executeDispatch(document, „.uno:stuck_out_tongue:rotect“, „“, 0, args1())
end sub

Wer kann mir dazu hilfreiche Tipps geben? Gern auch per
Makro/EventListener, da eh schon vorhanden…

LG, Masl

MfG MwieMichel

Hallo Marsl,

Bei StarBasic/OO Calc bin
ich grad noch auf der Suche nach einer vergleichbaren Lösung.
Leider sind die meisten hier bei WWW eher MS-affin… :wink:

ja, ist so, deshalb schrieb ich ja irgendwo zu dir daß du in einem
Calc-Forum mehr Chancen hättest.

Oder dieser Dannenhöfer dein Freund ist/wäre :smile: :
http://www.dannenhoefer.de/faqstarbasic/WiekannArbei…

Wie hast du dir dein StarBasic Wissen eigentlich erworben? Ich habe
da auch schon in StarBasic paar Prozeduren codiert aber für 10
Codezeilen brauche ich 2-3 Stunden Recherche im Internet :frowning:((

Denn in der für mich gewöhnungsbedürftigen Hilfe in StarBasic finde
ich im Normalfall grad mal nix. Logisch, in Excel-Vba heißt das
.Visible , wenn ich danach in der Hilfe suche kommt leider kein
Hinweis daß es dort .isvisible heißt. Ergo finde ich nix.

Und wenn du deine ganzen Codes die du hier zeigtest alle auf meine
Art erstellt hast, also Internetrecherche, Respekt.
Ich habe ein sehr offenes Ohr wenn du da gute Links kennst,
gute StarBasic Foren, Tutorials usw.

In der Tat, aufgezeichnete Makros in Calc-Basic haben
da dieses Dispatcher, Uno usw. Zeugs, das ist eine neue unbekannte Welt für mich.
Das ist MwieMichael auch klar wenn er den aufgezeichnten Code sieht.

Wer kann mir dazu hilfreiche Tipps geben? Gern auch per
Makro/EventListener, da eh schon vorhanden…

Magst du mir bitte mal verklickern was du da immer mit EventListener
meinst? Was genau bedeutet das in OO-Calc-Basic?
Events=Ereignisse ist mir klar. Das hat Excel-Vba auch in
Klassenmodulen.
Wie z.B. in dem automatisch bei Mappenerstellung angelegten
Klassenmodul namens „Tabelle1“. Dort stehen von Haus verschiedene
Ereignisprozedur-Hüllen zur Verfügung.

Wie z.B.
**Private Sub Worksheet_Change(ByVal Target As Range)

End Sub**

Wenn ich jetzt in diese Prozedurhülle innen reichnschreibe
Msgbox „Änderung stattgefunden“
würde bei jeder Zellwertänderung (Change) in diesem Blatt
die MsgBox kommen.

So. was ist jetzt ein Eventlistener?

Etwas anderes vllt. kannst du mir dabei helfen.
Wenn ich in einem Modul in StarBasic mehrere Prozeduren habe und
jetzt eine davon ausführen lassen will, wie mache ich das denn?

Auch wenn ich den Cursor in die zweite, dritte Prozedur stelle und
dann F5 drücke so wird IMMER nur die erste Pozedur ausgeführt *fluch*
Wie starte ich im Editor eine Prozedur die nicht die oberste ist?

Zur Belohnung daß du a) bis hierher fleißig mitgelesn hast (ja, ich weiß, ich kann mich schwer kurzfassen *lächel* eine Belohnung.

Gestern habe ich nämlich etwas gefunden im Internet was ich sehr
gerne schon vor zwei Jahren gefunden hätte wo ich mit meinen
spärlichen StarBasic Ausflügen begann, hätte mir viel, viel
Zeit gespart.

Denn ich fand den Stein des Weisen oder so, ich fand heraus wie man
Excel-Vba Code in Starbasic zum Laufen bekommen kann.
Das Finden war gestern Abend und ich habe nur den Code getestet den
ich gleich zeige. Lief problemlos.
Das läßt mich hoffen daß auch anderer Vba-Code läuft.

Wenn du kein Excel-Vba kannst so wäre das dann unwichtig, hier sind
einige die dadrin sehr gut sind.

Hier der Code:

**Option VBASupport 1  
Option Compatible**  
Sub Aus
dim N
for N = 2 to worksheets.count
 worksheets(n).visible=false
next n
End Sub

Sub Ein
dim N
for N = 2 to worksheets.count
 worksheets(n).visible=true
next n
End Sub

Gruß
Reinhard

Hallo Marsl,

Bei StarBasic/OO Calc bin
ich grad noch auf der Suche nach einer vergleichbaren Lösung.
Leider sind die meisten hier bei WWW eher MS-affin… :wink:

ja, ist so, deshalb schrieb ich ja irgendwo zu dir daß du in
einem
Calc-Forum mehr Chancen hättest.

Das ist ja das Leidige im Netz: für jede kleine Frage, die du zu einem bestimmten Thema hast, gibt es ein eigenes Forum, bei dem du dich jedoch jedes Mal vorher registrieren musst, um etwas zu fragen.
Ich bete zu werweißwem, dass das nicht im realen Leben die Schule macht…!

„Guten Tag, ich hätte gern 5 Brötchen und eine Packung Zigaretten…“
„Gern! Ihren Mitgliedsausweis bitte…“

Oder dieser Dannenhöfer dein Freund ist/wäre :smile: :
http://www.dannenhoefer.de/faqstarbasic/WiekannArbei…

Den kenne ich (also seine Seite), allerdings hören die meisten Tipps da auf, wo meine Frage losgeht. Such doch mal nach einem Codebeispiel, welches dir die aktuelle Cursorposition (aktive Zelle) ermittelt… Bei Danni findest du da viel, allerdings steht immer irgendwo im Code …getbyposition(x,y)

Wie schwierig, eine Zelle anzusprechen, von der ich vorher die Koordinaten festgelegt habe!

Wie hast du dir dein StarBasic Wissen eigentlich erworben?

Gezwungenermaßen auf Arbeit, da man hier (noch) OO statt MS nutzt. Allerdings muss ich sagen, dass mir mein VB-Wissen (Grundlagen!) doch schon ne ganze Ecke weiter geholfen hat bei Starbasic (sprich: ßtarrbassitsch) :wink:

Ich habe da auch schon in StarBasic paar Prozeduren codiert aber für :10 Codezeilen brauche ich 2-3 Stunden Recherche im Internet :frowning:((
Denn in der für mich gewöhnungsbedürftigen Hilfe

Ach was…? Die ist doch toll…! *fg*

finde
ich im Normalfall grad mal nix. Logisch, in Excel-Vba heißt
das
.Visible , wenn ich danach in der Hilfe suche kommt leider
kein
Hinweis daß es dort .isvisible heißt.

Volltextsuche? Was ist das?

Ergo finde ich nix.

Und wenn du deine ganzen Codes die du hier zeigtest alle auf
meine
Art erstellt hast, also Internetrecherche, Respekt.
Ich habe ein sehr offenes Ohr wenn du da gute Links kennst,
gute StarBasic Foren, Tutorials usw.

www.openoffice.org hilft da eine ganze Ecke weiter!

In der Tat, aufgezeichnete Makros in Calc-Basic haben
da dieses Dispatcher, Uno usw. Zeugs, das ist eine neue
unbekannte Welt für mich.
Das ist MwieMichael auch klar wenn er den aufgezeichnten Code
sieht.

Wer kann mir dazu hilfreiche Tipps geben? Gern auch per
Makro/EventListener, da eh schon vorhanden…

Magst du mir bitte mal verklickern was du da immer mit
EventListener
meinst? Was genau bedeutet das in OO-Calc-Basic?
Events=Ereignisse ist mir klar. Das hat Excel-Vba auch in
Klassenmodulen.

Ob und in welcher Form es das in XL gibt, weiß ich gar nicht (weil in VB noch nie so tief eingestiegen, um darauf zu stoßen).

Ich finde diese Eventlistener/-handler (das Meiste habe ich mir ausm Netz zusammenkopiert und angepasst, hat auch etwas gedauert…) sehr praktisch: du kannst mit ihnen so gut wie alles überwachen, was man mit Calc tun kann und eine bestimmte Aktion (Makroausführung) an eine Bedingung knüpfen, z.b. Spalten/Zeilen aus-/einblenden, wenn in Zelle XY dieser oder jener Wert steht.

hier mal ein Beispiel, wie schön man sowas u.U. erklärt bekommen kann:
http://www.openoffice-forum.de/viewtopic.php?f=5&t=398

Wie z.B. in dem automatisch bei Mappenerstellung angelegten
Klassenmodul namens „Tabelle1“. Dort stehen von Haus
verschiedene
Ereignisprozedur-Hüllen zur Verfügung.

Wie z.B.
**Private Sub Worksheet_Change(ByVal Target As Range)

End Sub**

Wenn ich jetzt in diese Prozedurhülle innen reichnschreibe
Msgbox „Änderung stattgefunden“
würde bei jeder Zellwertänderung (Change) in diesem Blatt
die MsgBox kommen.

So. was ist jetzt ein Eventlistener?

Ähm… Jo! Nur, dass der nicht schon vorbereitet auf seinen Einsatz wartet sondern erst gebaut werden muss. Hat Vor- und Nachteile…
(Zeit Aufwand…)

In wie weit ließe sich denn dein VB-Beispiel auf eine konkrete Zelle anpassen? Wenn ich bisher „ByVal“ gelesen habe, hab ich immer zurück geklickt oder weitergescrollt. Ist mir aus irgend einem Grund suspekt. Das gibts ja auch bei OO, diese ByVal, aber ich habe bisher noch keine Veranlassung gesehen, mich näher damit zu beschäftigen.

Werde aber demnächst mal deinen Code in OO kopieren und schauen, was passiert… Try and Error…

Etwas anderes vllt. kannst du mir dabei helfen.
Wenn ich in einem Modul in StarBasic mehrere Prozeduren habe
und
jetzt eine davon ausführen lassen will, wie mache ich das
denn?

Auch wenn ich den Cursor in die zweite, dritte Prozedur stelle
und
dann F5 drücke so wird IMMER nur die erste Pozedur ausgeführt
*fluch*
Wie starte ich im Editor eine Prozedur die nicht die oberste
ist?

Dafür habe ich auch nur zwei Lösungen:
a) die zu bearbeitende Prozedur nach oben verschieben (cut+paste)
oder
b) gleich für jede ein eigenes Modul aufmachen (aber ich fürchte, dann musst du von Anfang an viele deiner Variablen global (=private?) deklarieren…

Zur Belohnung daß du a) bis hierher fleißig mitgelesn hast
(ja, ich weiß, ich kann mich schwer kurzfassen *lächel* eine
Belohnung.

Gestern habe ich nämlich etwas gefunden im Internet was ich
sehr
gerne schon vor zwei Jahren gefunden hätte wo ich mit meinen
spärlichen StarBasic Ausflügen begann, hätte mir viel, viel
Zeit gespart.

Denn ich fand den Stein des Weisen oder so, ich fand heraus
wie man
Excel-Vba Code in Starbasic zum Laufen bekommen kann.
Das Finden war gestern Abend und ich habe nur den Code
getestet den
ich gleich zeige. Lief problemlos.
Das läßt mich hoffen daß auch anderer Vba-Code läuft.

Wenn du kein Excel-Vba kannst so wäre das dann unwichtig, hier
sind
einige die dadrin sehr gut sind.

Hier der Code:

Option VBASupport 1
Option Compatible

Sub Aus
dim N
for N = 2 to worksheets.count
worksheets(n).visible=false
next n
End Sub

Sub Ein
dim N
for N = 2 to worksheets.count
worksheets(n).visible=true
next n
End Sub

Gruß
Reinhard

Selbst wenn das funktioniert (.visible/.ISvisible ?), hat es einen entscheidenden Haken:

Du kannst mit OO-SB per Makro nicht auf ausgeblendete Tabellenblätter zugreifen! (zumindest konnte mir noch niemand sagen, wie es geht…)

Ich habe es geschafft, die ungewünschten TB auszublenden, aber alle Verweise auf diese liefen daraufhin gegen die Wand (ref!)!

Allerdings gibt es die Möglichkeit, die Inhalte der TB komplett auszublenden und gegen Veränderungen zu schützen (was mein Ziel dabei war). Zelleigenschaften-Schutz-Alles ausblenden, dann den TB-Schutz an.