Calc: Zeilen mit Makro ausblenden
Moderator: Moderatoren
Calc: Zeilen mit Makro ausblenden
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
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
Re: Calc: Zeilen mit Makro ausblenden
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Calc: Zeilen mit Makro ausblenden
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.
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.
LG
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Re: Calc: Zeilen mit Makro ausblenden
Hallo
@Clag: Eine "if...then..." zeile ist dort überflüssig, es geht schlicht mit:
Zweimal "if..then" an der Stelle ist noch überflüssiger - es gibt "else"
Karo
@Clag: Eine "if...then..." zeile ist dort überflüssig, es geht schlicht mit:
Code: Alles auswählen
...visible = not ....state
Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Calc: Zeilen mit Makro ausblenden
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?
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
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Re: Calc: Zeilen mit Makro ausblenden
Hallo
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:
Gruß Karo
Code: Alles auswählen
myRange.isvisible = not cbool ( MF1.state)
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
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Calc: Zeilen mit Makro ausblenden
Hallo Karo,
ja nun habe ich verstanden wie die erst von dir vorgeschlagene Variante funktioniert
es wird der Wert 1 bzw 0 aus der Abfrage MF1.state direkt als true bzw false Ersatz übergeben ahhh !
aber das ist doch bestimmt so eine Insider Variante oder?
die if else Variante scheint mir doch die sicherste zu sein
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
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 .....
ja nun habe ich verstanden wie die erst von dir vorgeschlagene Variante funktioniert
Code: Alles auswählen
myRange.isvisible = not cbool ( MF1.state)

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
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
Das kommt vermutlich nicht vor aber ausschließen kann man es auch nicht .....
LG
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Re: Calc: Zeilen mit Makro ausblenden
Aloha
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.
"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.
Doch, das kann sogar in diesem konkreten Fall auftreten, nämlich wenn die Option "Dreifacher Status" des Markierfeldes aktiviert wird (Rückgabewert 2).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 .....
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.
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)Karolus hat geschrieben:HalloIch bin etwas überrascht das man dort explizit mit cbool konvertieren muss, ich meine das war in früheren Ooo-versionen nicht nötig ?!Code: Alles auswählen
myRange.isvisible = not cbool ( MF1.state)
"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.
Re: Calc: Zeilen mit Makro ausblenden
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
@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)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Calc: Zeilen mit Makro ausblenden
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
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
Re: Calc: Zeilen mit Makro ausblenden
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
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