Calc: Zeilen mit Makro ausblenden

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

Moderator: Moderatoren

Bratlord
Beiträge: 5
Registriert: So, 04.05.2008 12:58

Calc: Zeilen mit Makro ausblenden

Beitrag von Bratlord »

Hallo Leute,

ich habe folgendes vor:

Ich möchte mit einem Markierefeld ein Makro ausführen, welches eine Reihe von zusammenhängenden Zeilen in einem anderen Tabellenblatt ausblendet, sodass diese, etwa beim PDF-Export, nicht gedruckt werden. Leider bin ich absoluter Anfänger was StarBasic angeht. Hat hier vielleicht irgend jemand einen funktionierenden Code, welcher die oben genannte Funktion ausführt?

Gruß, Bratlord
Win XP SP 3 / OpenOffice 3.3
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Calc: Zeilen mit Makro ausblenden

Beitrag von Karolus »

Hallo
Den funktionierenden Code findest du hier

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Calc: Zeilen mit Makro ausblenden

Beitrag von clag »

Hallo Bratlord,

da ich selbst "OOo BASIC Lehrling" bin, weiß ich genau wie schwer es manchmal am Anfang ist, darum habe ich mal eine Beispieldatei erstellt,
in der das "ab bzw anhaken" eines Markierfeld, ein Makro startet welches Zeilen in einer anderen Tabelle ein oder ausblendet.
zeilen_ausblenden_47343.ods
(10.34 KiB) 513-mal heruntergeladen
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Calc: Zeilen mit Makro ausblenden

Beitrag von Karolus »

Hallo
@Clag: Eine "if...then..." zeile ist dort überflüssig, es geht schlicht mit:

Code: Alles auswählen

...visible = not ....state
Zweimal "if..then" an der Stelle ist noch überflüssiger - es gibt "else"

Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Calc: Zeilen mit Makro ausblenden

Beitrag von clag »

Hallo Karolus,

an Codeoptimierung und Korrektur bin ich immer interessiert, aber deinen Hinweis versteht ich nicht so recht,
kannst du bitte etwas konkreter werden und mir den Code der dir da vorschwebt aufzeigen?
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Calc: Zeilen mit Makro ausblenden

Beitrag von Karolus »

Hallo

Code: Alles auswählen

myRange.isvisible = not cbool ( MF1.state)
Ich bin etwas überrascht das man dort explizit mit cbool konvertieren muss, ich meine das war in früheren Ooo-versionen nicht nötig ?!

Wenn es zu einer If-abfrage nur zwei Alternativen gibt dann:

Code: Alles auswählen

if bedingung then
  tu das eine
else
  tu das andere
end if
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Calc: Zeilen mit Makro ausblenden

Beitrag von clag »

Hallo Karo,

ja nun habe ich verstanden wie die erst von dir vorgeschlagene Variante funktioniert

Code: Alles auswählen

myRange.isvisible = not cbool ( MF1.state)
es wird der Wert 1 bzw 0 aus der Abfrage MF1.state direkt als true bzw false Ersatz übergeben ahhh ! :lol:
aber das ist doch bestimmt so eine Insider Variante oder?


die if else Variante scheint mir doch die sicherste zu sein

Code: Alles auswählen

if MF1.state = 1 then 
myRange.isvisible = false
else
myRange.isvisible = true
end if 
weil wirklich nur bei 1 die Zeilen ausgeblendet werden und alles Andere führt zum einblenden


diese Variante sah am übersichtlichsten aus und ich hatte sie deshalb zuerst genommen

Code: Alles auswählen

'if MF1.state = 0 then myRange.isvisible = true
'if MF1.state = 1 then myRange.isvisible = false 
aber was ist, wenn mal etwas Anderes wie 1 oder 0 übergeben wird?
Das kommt vermutlich nicht vor aber ausschließen kann man es auch nicht .....
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Calc: Zeilen mit Makro ausblenden

Beitrag von DPunch »

Aloha
clag hat geschrieben: aber was ist, wenn mal etwas Anderes wie 1 oder 0 übergeben wird?
Das kommt vermutlich nicht vor aber ausschließen kann man es auch nicht .....
Doch, das kann sogar in diesem konkreten Fall auftreten, nämlich wenn die Option "Dreifacher Status" des Markierfeldes aktiviert wird (Rückgabewert 2).
Davon abgesehen kannst Du Dir sicher sein, dass ein nicht markiertes Markierfeld immer den Status False bzw den dazu äquivalenten numerischen Wert zurückliefern wird und ein markiertes entsprechend den Status True bzw einen dazu äquivalenten numerischen Wert.
Karolus hat geschrieben:Hallo

Code: Alles auswählen

myRange.isvisible = not cbool ( MF1.state)
Ich bin etwas überrascht das man dort explizit mit cbool konvertieren muss, ich meine das war in früheren Ooo-versionen nicht nötig ?!
Das ergibt sich nur durch die Verwendung von "NOT". Ein numerischer Wert wird dadurch um 1 erhöht und ins negative verkehrt. (Interner numerischer Wert für FALSE = 0, TRUE = -1)
"State" eines Markierfeldes gibt die Werte 0,1 oder 2 zurück. Die Verwendung von "NOT" macht daraus -1,-2 oder -3, was wiederum durch die implizite Typkonvertierung bei der Zuweisung immer als TRUE ausgewertet wird.
Ohne die Verwendung von "NOT" ist keine Konvertierung nötig, 0 wird immer als FALSE ausgeweret, alles andere als TRUE.
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Calc: Zeilen mit Makro ausblenden

Beitrag von Karolus »

Hallo
@Dpunch
Danke für die Erläuterung, mein Fehler war die falsche Annahme daß MF1.state 'true' oder 'false' zurückgibt.

Ps. Wahrscheinlich bin ich auch schon Python-geschädigt, dort wird mit "not" das übergergebene Argument implizit in einen Bool gewandelt:
not 2
not "foo"
not True
ergeben alle False
not 0
not ""
not False
ergeben True

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Bratlord
Beiträge: 5
Registriert: So, 04.05.2008 12:58

Re: Calc: Zeilen mit Makro ausblenden

Beitrag von Bratlord »

Hallo Leute,

erst einmal vielen Dank für all die hilfreichen Beiträge. Da ich wie gesagt blutiger Anfänger in StarBasic bin, habe ich natürlich am Ende nicht so ganz begriffen, was nun der "beste Code" sein soll. Also die Version von clag funktioniert soweit. Muss man da noch was ändern,wenn es eh nur 2 Varianten gibt: AN & AUS

Ein nächstes Problem stellt sich nun aber: In den auszubelnden Zeilen befinden sich auch Diagramme, die beim ausblenden ebenfalls verschwinden sollten. Wie auch beim Ausblenden "von Hand" werden die Diagramme mit dem hier besprochenen Makro nicht ausgeblendet. Gibt es da eine Lösung?

Vielen Dank für Eure Hilfe

Gruß Bratlord
Zuletzt geändert von Bratlord am Mo, 21.03.2011 23:06, insgesamt 1-mal geändert.
Win XP SP 3 / OpenOffice 3.3
Bratlord
Beiträge: 5
Registriert: So, 04.05.2008 12:58

Re: Calc: Zeilen mit Makro ausblenden

Beitrag von Bratlord »

Hallo Leute,

vielleicht sollte ich doch noch einmal erklären was das eigentliche Endziel ist. Eventuell ist das Ausblenden gar nicht der Königsweg.

Ich möchte mit dem Ausblenden die druckbaren Bereiche in einer Tabelle bestimmen.

Beispiel:

Markierfeld 1:Haken gesetzt = Es wird in Tabelle2 der Druckbereich Zeile 1 bis 10, Spalte A bis E als Druckbereich festgelegt.
Markierfeld 2:Haken gesetzt = Es wird in Tabelle2 der Druckbereich Zeile 11 bis 20, Spalte A bis E als Druckbereich festgelegt.
...

Ist ein Haken nicht gesetzt so wird der jeweilige Bereich nicht gedruckt.

Vielleicht ist das der sinnvollere Weg?!

Gruß Bratlord
Win XP SP 3 / OpenOffice 3.3
Antworten