vierviervier hat geschrieben:Zunächst: die Ebene, wo sich das mit den Programmen abspielt, ist unter Extras - Makros - Makros verwalten - LibreOfficeBasic - bearbeiten, oder?
korrekt
Für deine Anweisungen bezüglich der Umarbeitung der Programme für meine Zwecke fehlen mir leider so dermaßgen die Grundkenntnisse, dass es nicht mal Sinn macht es zu probieren, da bräuchte ich ziemlich Anleitung
Ok, mal gucken:
Zum
Sortieren brauchst du, wenn du das nach meinem Muster aufziehen willst, natürlich erstmal ein Macro für jedes Szenario. Der letztens zitierte Code-Auszug "SortBy_Status" ist so eins. Was ähnliches würde der Macrorecorder ausspucken, nicht so schön.
Dim SortFeld(4) As new com.sun.star.table.TableSortField ist die Anzahl deiner Sortierschlüssel (Zählung beginnt bei 0!), hier also 5
Dim SortProps(2) As new com.sun.star.beans.PropertyValue sind die Eigenschaften, die du auch im Dialog ankreuzen kannst (Zählung beginnt bei 0!), die kannst du so übernehmen.
Dann musst du für jeden Sortierschlüssel die Spalte (Zählung beginnt bei 0!), aufsteigend/absteigend und den Feldtyp
http://www.openoffice.org/api/docs/comm ... dType.html festlegen.
Dann brauchst du ein Macro, welches abhängig von deiner PullDown-Auswahl das Macro für das entsprechende Szenario aufruft. --> "Sub AuswahlSortieren(oEvent)". Dafür wiederum benötigst du ausserdem "GetLastUsedRow()" und "GetLastUsedCol()".
Je nachdem, ob du ein Kombo- oder Listenfeld verwendest, die entsprechende Zeile auskommentieren.
Select Case ist sowas wie ein Multiwahlschalter. Case fragt ab, was in der mit dem PullDown verknüpften Zelle steht (also im Pulldown der ausgewählte Eintrag, Eigenschaften:Listenfeld > Daten > Verknüpfte Zelle) und ruft das zugeordnete Macro auf.
Eigentlich einfacher als es auf den ersten Blick aussieht, die einzge Stolperfalle ist der Unterschied zw. Kombobox und Listenfeld.
In der Datei ist eine ausgeblendete Tabelle, in der die im Pulldown anzuzeigenden Einträge stehen, verknüpft in Eigenschaften:Listenfeld > Daten > Quellzellenbereich
Beim
Filtern stehen die Werte für die Prüfung bei mir in Spalte Q (eigentlich das einzige, was du noch im zitierten Code anpassen musst), nG ist die Variable für den Grenzwert, den ich hier ienfach im Macro-Quelltext fest zugewiesen habe.
Dann läuft eine Schleife von 1 bis zu zur letzten benutzten Zeile (GetLastUsedRow()) und liest aus der Zelle in Spalte Q, Zeile i den numerischen Wert (getCellRangeByName(...).getValue, prüft den Wert gegen den Grenzwert (if) und belndet die Zeilen ein oder aus (oZeilen.isvisible = true bzw. false).
ScreenLock und ScreenUpdate (die fehlen in der Beschreibung unter "benötigte Macros") sind Macros, die Bildschirmaktualisierung aus-/einschalten. Damit läuft das deutlich schneller, weil nicht jede Änderung gerendert wird.
(oder Tipps für gute Tutorials/Hilfen).
Da kenne ich auch nicht wirklich was taugliches. Ich hab versucht, macros anzupassen, viel hier im Forum gelesen und gefragt. Dann noch die API-Doc unter
https://wiki.openoffice.org/wiki/Docume ... ASIC_Guide
Und zuletzt ist für mich die Zuweisung des fertigen Makros an einen Button, den man dann in der Tabelle einfügt auch noch Neuland und bin da trotz Recherche im Forum und bei Google noch nicht richtig weiter.
Werkzeug "Steuerelemente" > Entwurfsmodus an > Rechtsklick auf den Button oder das Pulldown > Kontrollfeld... > Dialog: "Eigenschaften [Kontrollelement]" > Ereignisse > beim Listenfeld das Macro bei "Status geändert", beim Button z.B. bei "Aktion ausführen" zuweisen (der Button mit "..." am Zeilenende)
Ach ja, die Controls liegen bei mir auf dem Tabellenblatt, welches manipuliert wird (oSheet = ThisComponent.CurrentController.ActiveSheet), andernfalls musst du angeben, welches Blatt manipuliert werden soll.
Ich hoffe, damit kannst du bisschen was anfangen. Ich bemühe mich ja, meinen Code sauber und lesbar zu gliedern, weil ich mich sonst auch nicht mehr zurechtfinde
Hatte vor 2 Wochen zum ersten mal eine Pivot-Tabelle erstellt und dachte schon ich habs jetzt voll drauf.
Und weicht's nur unwesentlich vom Beispiel ab, geht nix mehr und man bekommt's nicht angepasst... kenne ich, geht mir dauernd so. Dann wirft man den Mist in die Ecke, und irgendwann fängt man wieder von ganz vorn an, weil man alles bisher gelernte vergessen hat.
[quote="vierviervier"]Zunächst: die Ebene, wo sich das mit den Programmen abspielt, ist unter Extras - Makros - Makros verwalten - LibreOfficeBasic - bearbeiten, oder?[/quote]
korrekt
[quote]Für deine Anweisungen bezüglich der Umarbeitung der Programme für meine Zwecke fehlen mir leider so dermaßgen die Grundkenntnisse, dass es nicht mal Sinn macht es zu probieren, da bräuchte ich ziemlich Anleitung[/quote]
Ok, mal gucken:
Zum [b]Sortieren[/b] brauchst du, wenn du das nach meinem Muster aufziehen willst, natürlich erstmal ein Macro für jedes Szenario. Der letztens zitierte Code-Auszug "SortBy_Status" ist so eins. Was ähnliches würde der Macrorecorder ausspucken, nicht so schön.
Dim SortFeld(4) As new com.sun.star.table.TableSortField ist die Anzahl deiner Sortierschlüssel (Zählung beginnt bei 0!), hier also 5
Dim SortProps(2) As new com.sun.star.beans.PropertyValue sind die Eigenschaften, die du auch im Dialog ankreuzen kannst (Zählung beginnt bei 0!), die kannst du so übernehmen.
Dann musst du für jeden Sortierschlüssel die Spalte (Zählung beginnt bei 0!), aufsteigend/absteigend und den Feldtyp [url]http://www.openoffice.org/api/docs/common/ref/com/sun/star/util/SortFieldType.html[/url] festlegen.
Dann brauchst du ein Macro, welches abhängig von deiner PullDown-Auswahl das Macro für das entsprechende Szenario aufruft. --> "Sub AuswahlSortieren(oEvent)". Dafür wiederum benötigst du ausserdem "GetLastUsedRow()" und "GetLastUsedCol()".
Je nachdem, ob du ein Kombo- oder Listenfeld verwendest, die entsprechende Zeile auskommentieren.
Select Case ist sowas wie ein Multiwahlschalter. Case fragt ab, was in der mit dem PullDown verknüpften Zelle steht (also im Pulldown der ausgewählte Eintrag, Eigenschaften:Listenfeld > Daten > Verknüpfte Zelle) und ruft das zugeordnete Macro auf.
Eigentlich einfacher als es auf den ersten Blick aussieht, die einzge Stolperfalle ist der Unterschied zw. Kombobox und Listenfeld.
In der Datei ist eine ausgeblendete Tabelle, in der die im Pulldown anzuzeigenden Einträge stehen, verknüpft in Eigenschaften:Listenfeld > Daten > Quellzellenbereich
Beim [b]Filtern[/b] stehen die Werte für die Prüfung bei mir in Spalte Q (eigentlich das einzige, was du noch im zitierten Code anpassen musst), nG ist die Variable für den Grenzwert, den ich hier ienfach im Macro-Quelltext fest zugewiesen habe.
Dann läuft eine Schleife von 1 bis zu zur letzten benutzten Zeile (GetLastUsedRow()) und liest aus der Zelle in Spalte Q, Zeile i den numerischen Wert (getCellRangeByName(...).getValue, prüft den Wert gegen den Grenzwert (if) und belndet die Zeilen ein oder aus (oZeilen.isvisible = true bzw. false).
ScreenLock und ScreenUpdate (die fehlen in der Beschreibung unter "benötigte Macros") sind Macros, die Bildschirmaktualisierung aus-/einschalten. Damit läuft das deutlich schneller, weil nicht jede Änderung gerendert wird.
[quote](oder Tipps für gute Tutorials/Hilfen).[/quote]
Da kenne ich auch nicht wirklich was taugliches. Ich hab versucht, macros anzupassen, viel hier im Forum gelesen und gefragt. Dann noch die API-Doc unter [url]https://wiki.openoffice.org/wiki/Documentation/BASIC_Guide[/url]
[quote]Und zuletzt ist für mich die Zuweisung des fertigen Makros an einen Button, den man dann in der Tabelle einfügt auch noch Neuland und bin da trotz Recherche im Forum und bei Google noch nicht richtig weiter.[/quote]
Werkzeug "Steuerelemente" > Entwurfsmodus an > Rechtsklick auf den Button oder das Pulldown > Kontrollfeld... > Dialog: "Eigenschaften [Kontrollelement]" > Ereignisse > beim Listenfeld das Macro bei "Status geändert", beim Button z.B. bei "Aktion ausführen" zuweisen (der Button mit "..." am Zeilenende)
Ach ja, die Controls liegen bei mir auf dem Tabellenblatt, welches manipuliert wird (oSheet = ThisComponent.CurrentController.ActiveSheet), andernfalls musst du angeben, welches Blatt manipuliert werden soll.
Ich hoffe, damit kannst du bisschen was anfangen. Ich bemühe mich ja, meinen Code sauber und lesbar zu gliedern, weil ich mich sonst auch nicht mehr zurechtfinde :-)
[quote]Hatte vor 2 Wochen zum ersten mal eine Pivot-Tabelle erstellt und dachte schon ich habs jetzt voll drauf.[/quote]
Und weicht's nur unwesentlich vom Beispiel ab, geht nix mehr und man bekommt's nicht angepasst... kenne ich, geht mir dauernd so. Dann wirft man den Mist in die Ecke, und irgendwann fängt man wieder von ganz vorn an, weil man alles bisher gelernte vergessen hat.