Makroabfrage

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

DerThomas
*
Beiträge: 15
Registriert: Do, 22.01.2009 14:43

Re: Makroabfrage

Beitrag von DerThomas »

Ole, nun bin ich auch registriert :D
DerThomas
*
Beiträge: 15
Registriert: Do, 22.01.2009 14:43

Re: Makroabfrage

Beitrag von DerThomas »

Niemand ? Bitte, ich bin echt verzweifelt !

Hier noch das Makro, ich weiß ja nicht, vielleicht kann man da ja die Bedingung mit herein nehmen ?

Code: Alles auswählen

sub Main
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 = "aTableName"
args1(0).Value = "Start"

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


end sub
Bitte Hillllfe..
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Makroabfrage

Beitrag von turtle47 »

Hi Thomas,
DerThomas hat geschrieben:Ole, nun bin ich auch registriert
Na, dann herzlich Willkommen hier im Forum.
Thomas hat geschrieben:Das ich Makros aufzeichnen kann finde ich ja schon mal absolut Klasse ich habe nur ein Problem
Das wird Dir wahrscheinlich in Zukunft weitere Probleme bereiten, da der Dispatchcode nicht alles aufzeichnest was Du machst!

Und ehrlich gesagt habe ich nicht ganz verstanden was Du vorhast, deshalb habe ich Dir mal ein Beispiel erstellt, so wie ich mir das vorstelle.

Du klickst die Checkboxen an, egal in welcher Reihenfolge, und wenn alle Checkboxen aktiviert sind, dann wird das erste Tabellenblatt ausgeblendet. Ist das auch nach Deinen Vorstellungen?

Viel Erfolg.

Jürgen
Dateianhänge
Checkbox_Tabelle_Ausblenden.ods
(8.85 KiB) 115-mal heruntergeladen
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
DerThomas
*
Beiträge: 15
Registriert: Do, 22.01.2009 14:43

Re: Makroabfrage

Beitrag von DerThomas »

Hallo Jürgen,

vielen Dank für Deine Mühe ! Jetzt habe ich endlich einen Ansatz auf dem ich aufbauen kann. Ich habe das einfach nicht begriffen was im Makro macht das ich auf die Tabelle zugreifen kann und warum und wie und nach 2 Tagen sind nur noch irgendwelche wirre Zeichen vor meinen Augen gewuselt... Hast mir wirklich geholfen :)

Könntest Du mir vielleicht noch sagen wie man das umsetzen könnte das er nicht die 3 Checkboxen abfragt sondern einen Wert in einer Zelle, z.b. in deinem Entwurf dann A1 oder so ?

Angenommen in A1 würden 3 andere Werte zusammengerechnet und wenn die alle zusammen 3 ergeben soll die Tabelle ausgeblendet werden ? Oder aber, wenn der Wert erreicht ist das eine Schaltfläche altiv wird ?

Wäre Super :D

Hab ich mich schon bedankt ? Vielen Dank !!!
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Makroabfrage

Beitrag von turtle47 »

Hi Thomas,
DerThomas hat geschrieben:Angenommen in A1 würden 3 andere Werte zusammengerechnet und wenn die alle zusammen 3 ergeben soll die Tabelle ausgeblendet werden
Dann musst Du das über eine "function" lösen wie in diesem Beitrag schon einmal beschrieben wurde.

Der angepasste Code lautet dann:

Code: Alles auswählen

function Tabelle_ausblenden(wert)
	if wert = 3 then : Ausblenden
	end if
	Tabelle_ausblenden = wert
end function
    
Sub Ausblenden
	myDoc = thisComponent
	mySheet = myDoc.Sheets().getByName("Tabelle1")
	mysheet.isvisible=false
End Sub
Passend dazu schreibst Du dann in eine Zelle:

Code: Alles auswählen

=TABELLE_AUSBLENDEN(A1)
und in Zelle A1 die Formel:

Code: Alles auswählen

=SUMME(A2:A4)
Wenn also in Zelle A1 der Wert 3 erreicht wird startet das Makro und die Tabelle wird ausgeblendet. :lol:

Fertig.

Jürgen
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
DerThomas
*
Beiträge: 15
Registriert: Do, 22.01.2009 14:43

Re: Makroabfrage

Beitrag von DerThomas »

Hallo Jürgen,

den Beitrag hatte ich gesehen aber die Überschrift mit dem externen Programm starten hat mich wohl abgeschreckt. Geahnt hatte ich schon das die Lösung hier irgendwo ist. Dazu kommt noch das ich ja mal so überhaupt kein Plan von der Geschichte habe und deshalb oftmals, wenn anderen schon längst geholfen wurde, immer noch wie der Ochse vorm Berg stand. Durch Deine Hilfe habe ich jetzt aber eine schöne Grundlage auf der ich aufbauen kann, nochmals vielen Dank :D

Für mich bleibt immer noch was offen :

if wert = 3 then : Ausblenden verstehe ich aber warum muß hinter das "end if" dann nochmal das Tabelle_ausblenden = wert ?

myDoc = thisComponent begreife ich aber
was ist dann "mySheet" ? Weil dahinter dann steht "myDoc.Sheets().getByName("Tabelle1") und schon schwirren wieder die Buchstaben über den Monitor und ich verstehe gar nichts mehr :shock:

Wäre schön wenn Du mir das erklären würdest aber grundsätzlich hast Du mein Problem (naja, eins meiner Probleme ;)) super gelöst und mein Dank wird Dir für immer hinterher schleichen ! :D
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Makroabfrage

Beitrag von turtle47 »

Hallo Thomas,

ehrlich gesagt sind Functionen nicht geraden meine Stärke und ich hatte die Function einfach von Karolus so übernommen.
Ich habe es mal getestet und festgestellt:

Code: Alles auswählen

Tabelle_ausblenden = wert
kannst Du löschen.

Um eine Tabelle anzusprechen muss das Makro ja erst mal wissen welche Tabellen überhaupt vorhanden sind.
Im Langtext sieht das dann folgendermassen aus:

Code: Alles auswählen

oTabellenliste = oDoc.getSheets() ' Liste aller Tabellen = aus dem Dokument (oDoc). "hole" alle Tabellenblätter
oTabelle = oTabellenliste.getbyName(Tabelle1)'oTabelle = aus der oTabellenliste.mit dem Namen "Tabelle1"
DerThomas hat geschrieben:schon schwirren wieder die Buchstaben über den Monitor und ich verstehe gar nichts mehr
Dann empfehle ich Dir mal einen neuen Monitor oder eine neue Grafikkarte zu kaufen. :lol:
Im Ernst, schau Dir mal die super Homepage von Michael an, vieleicht bring die etwas Licht ins Dunkel.

Schöne Grüsse.

Jürgen
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
DerThomas
*
Beiträge: 15
Registriert: Do, 22.01.2009 14:43

Re: Makroabfrage

Beitrag von DerThomas »

turtle47 hat geschrieben:Dann empfehle ich Dir mal einen neuen Monitor oder eine neue Grafikkarte zu kaufen. :lol:

LOL ja schöne Idee, ich schiebe das einfach auf die Hardware und bin fein raus. Außerdem hilft mir das vielleicht dabei meiner Frau das plausibel zu machen das wir dringend neue Hardware brauchen :D Die Homepage von Michael hab ich direkt in meine Favoriten gepackt, danke für den Tip !
Das mit dem "getSheets" hab ich glaub ich auch verstanden bei weiteren Fragen werde ich dann aber erstmal wieder selber suchen sonst werde ich zu faul und bekomme Mecker weil meine Fragen schon 1000x beantwortet wurden :shock:

Vielen lieben Dank und schönes Wochenende !
DerThomas
*
Beiträge: 15
Registriert: Do, 22.01.2009 14:43

Re: Makroabfrage

Beitrag von DerThomas »

Ich bin´s schon wieder...vielleicht suche ich falsch aber weder bei Michael noch hier im Forum habe ich herausfinden können wie ich in meinen (ok,ok, deinen) Makro einbauen kann das ein Button, der inaktiv ist, bei eben jenem Wert aktiviert wird. Einblenden bzw. ausblenden bekomme ich hin, da war ich schon echt stolz mußte dann aber schnell feststellen das ich auf diesem Weg den Button leider nicht aktivieren kann :(

Wenn Du vielleicht noch mal die Zeit finden würdest ? Und...wieso sind in der Tabelle die Du gemacht hast die Gitternetzlinien ausgeblendet ? Ich könnte zwar einfach Deine nehmen und kopieren aber lieber wäre mir wenn ich´s selbst machen könnte ?
Bis dahin weiter ein schönes Wochenende :D

(muß jetzt einkaufen *würg*)
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Makroabfrage

Beitrag von turtle47 »

Hallo Thomas,
DerThomas hat geschrieben:das ich auf diesem Weg den Button leider nicht aktivieren kann
Meinst Du damit, dass wenn Du draufklickst ein Makro gestartet wird?

Wenn ja, dann mache im Entwurfsmodus einen Rechtsklick auf den Button und wähle "Kontrollfeld ...." aus.

In dem Eigenschaftsfenster den Reiter "Ereignisse" anklicken und dort "Beim auslösen" ein Makro auswählen.
Nicht vergessen den Entwurfsmodus wieder auszuschalten.

War es das?
DerThomas hat geschrieben:Und...wieso sind in der Tabelle die Du gemacht hast die Gitternetzlinien ausgeblendet
Weil ich das Anzeigen unter
Menue > Extras > Optionen > OOo-Calc > Ansicht > Optische Hilfen > [x] Gitterlinien
ausgeschaltet habe.

Schönes WE

Jürgen
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
DerThomas
*
Beiträge: 15
Registriert: Do, 22.01.2009 14:43

Re: Makroabfrage

Beitrag von DerThomas »

Hi Jürgen,

nein, ich meinte das man den Button erst drücken kann wenn ein Wert in einer Zelle erreicht ist, also so wie Du die Tabelle ausgeblendet hast, nur das in dem Moment der Button Aktiv wird und man ihn drücken kann.

Ja, aber wenn ich Deine Tabelle öffne sind die Linien weg, öffne ich eine Neue (Leere) sind sie wieder da. Wenn ich eine Tabelle erstelle und die Linien ausblende sind sie dann bei der nächsten leeren auch weg. :shock:

Vielen Dank für Deine Geduld :)

Thomas (der immer noch nicht schläft und morgen früh Baby-Dienst hat..)
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Makroabfrage

Beitrag von turtle47 »

Guten Morgen Thomas,

zum aktivieren der Schaltfläche nehme folgenden Code:

Code: Alles auswählen

function Button_aktivieren(wert)
   if wert = 3 then : Button_enabled
   end if
end function

Sub Button_enabled
	Dim vButton, vForm
	Dim oForms
	oForms = ThisComponent.CurrentController.ActiveSheet.DrawPage.Forms
	vForm = oForms.getByIndex(0) 'Erstes Tabellenblatt
	vButton = vForm.getByName("PushButton") 'Name der Schaltfläche
	vButton.Label = "Tabelle ausblenden" 'Beschriftung der Schaltfläche (Titel)
	vButton.enabled = True 'Schaltfläche aktivieren
	'vButton.enabled = False 'Schaltfläche deaktivieren
End Sub
In eine Zelle schreibst Du die Formel:

Code: Alles auswählen

=BUTTON_AKTIVIEREN(A1)
DerThomas hat geschrieben:Ja, aber wenn ich Deine Tabelle öffne sind die Linien weg, öffne ich eine Neue (Leere) sind sie wieder da. Wenn ich eine Tabelle erstelle und die Linien ausblende sind sie dann bei der nächsten leeren auch weg.
???

Schönes Restwochenende.

Jürgen
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
DerThomas
*
Beiträge: 15
Registriert: Do, 22.01.2009 14:43

Re: Makroabfrage

Beitrag von DerThomas »

Mahlzeit Jürgen,

super, genau das brauchte ich :D :D :D

Erst nochmal zu den Gitternetzlinien..

Hab´s jetzt verstanden, wenn ich eine Tabelle speichere in der die Linien ausgeblendet sind, wird sie bei jemand anderem, der das in Calc eigentlich nicht so eingestellt hat, auch ohne Linien angezeigt. An der Grundeinstellung von Calc ändert das bei demjenigen aber nichts. Ich war verwirrt weil ich beim nächsten Start von Calc dann auch keine Linien hatte.
Habe wieder was gelernt :D

Hintergrund ist übrigens eine Idee die ich gern umsetzten möchte, wenn ich soweit bin werde ich sie mal hier posten :)

Bis dahin viele liebe Grüße und einen schönen Sonntag !

Thomas
DerThomas
*
Beiträge: 15
Registriert: Do, 22.01.2009 14:43

Re: Makroabfrage

Beitrag von DerThomas »

Hiiilfe...

Voller Zuversicht habe ich jetzt meine Tabelle erstellt und in der Übersicht auch mehrere Buttons zur Navigation angelegt.

Das Problem ist nun anscheinend, das die "Schaltfläche" anscheinend gar nicht mit der Zelle verbunden ist, in die ich sie gemacht habe ? Aufgefallen ist mir das als ich die Zelle mit den Buttons eine Reihe verschieben wollte, die Buttons blieben an der selben Position... Außerdem müßte es doch eine Möglichkeit geben das die Buttons immer die gleiche Größe wie die Zellen selber haben,oder ?
Also, um auf den Punkt zu kommen, der Button müßte mit der Zelle verbunden sein in der er ist.
Dazu kommt noch, wenn ich den Entwurfmodus verlasse und auf eine Notiz in einer anderen Zelle zeige, wird diese durch die Buttons verdeckt. Ich begreife das nicht :(

Ich hab auch schon Hyperlinks versucht aber 1.gefallen mir die Buttons besser und 2. weiß ich nicht wie ich mit einem Hyperlink gleichzeitig meine Makros starten kann.

Liebe Grüße

Thomas
Antworten