Verschachteltes Ein- und Ausblenden von Zeilen/Spalten?
Moderator: Moderatoren
Verschachteltes Ein- und Ausblenden von Zeilen/Spalten?
Hallo,
ich habe eine Tabelle mit mehreren Stufen von "Wichtigkeit". Dass heißt, grundsätzlich brauche ich für den Ausdruck nur jede ca. 4 Spalte (das vareiert). Selten wünsch ich mir aber einen genaueren Ausdruck, bei dem zu dieser mindestens eine weitere Zeile eingeblendet ist. Es bleiben allerdings ständig noch Zeilen übrig, die ich nicht mit ausdrucken will.
Jetzt wünsche ich mir eine Klickmöglichkeit, bei der ich zum einen mehrere Zeilen auf einmal Ein- und Ausblenden kann und noch besser wäre es, wenn ich sogar die Möglichkeit hätte vorzugeben, mit dem einen Klick (nur) diese und mit dem anderen Klick zusätzlich auch noch jene Zeilen mit einzublenden.
Gibt´s so was?
Gruß - Mr.Ioes
ich habe eine Tabelle mit mehreren Stufen von "Wichtigkeit". Dass heißt, grundsätzlich brauche ich für den Ausdruck nur jede ca. 4 Spalte (das vareiert). Selten wünsch ich mir aber einen genaueren Ausdruck, bei dem zu dieser mindestens eine weitere Zeile eingeblendet ist. Es bleiben allerdings ständig noch Zeilen übrig, die ich nicht mit ausdrucken will.
Jetzt wünsche ich mir eine Klickmöglichkeit, bei der ich zum einen mehrere Zeilen auf einmal Ein- und Ausblenden kann und noch besser wäre es, wenn ich sogar die Möglichkeit hätte vorzugeben, mit dem einen Klick (nur) diese und mit dem anderen Klick zusätzlich auch noch jene Zeilen mit einzublenden.
Gibt´s so was?
Gruß - Mr.Ioes
Das wurde im Prinzip hier diskutiert:
viewtopic.php?t=1903
Denke Dir ein für Deine Belange geeignetes Kriterium aus und passe das Makro an.
Gruß
Stephan
viewtopic.php?t=1903
Denke Dir ein für Deine Belange geeignetes Kriterium aus und passe das Makro an.
Gruß
Stephan
Hallo Stephan,
zunächst heißt demnach die Antwort auf meine Frage: Ein- und Ausblenden kann man nur (hintereinander) einzelne Zeilen und nicht eine Gruppe von Zeilen (jdedenfalls nicht mit Boardmitteln, sondern allenfalls per Basic-Programmierung). Ok das habe ih mir eingetlich schon gedacht.
Dann meine ich nach dem Überfliegen des anderen Threads, dass es da nicht genau um meine Problemstellung geht (auch wenn man mit den dortigen Überlegungen wohl auch diesem Problem näher kommt).
Also wenn man mehrere Zelen per Makro ausblenden kann, dann bräuchte ich wohl folgende beiden Programme:
1. Programm
Für die Zeilen x bis y (am besten wäre: x = 1 Zeile des Druckbereichs und y = letzte Zeile des Druckbereichs)
Wenn in Spalte Salte F ein bestimmtes Datum ist (nämlich =T$3+V$3)
dann ausgeblendet lassen
sonst einblenden
Ende
2. Programm
Für die Zeilen x bis y (am besten wäre: x = 1 Zeile des Druckbereichs und y = letzte Zeile des Druckbereichs)
Wenn in Spalte D Inhalt ist (Inhalt = Zahlen)
dann eingeblendet lassen
sonst ausblenden
Ende
Ich mag Dich auch, wenn Du Dir nicht die Mühe machst!
Gruß - Mr.Ioes
zunächst heißt demnach die Antwort auf meine Frage: Ein- und Ausblenden kann man nur (hintereinander) einzelne Zeilen und nicht eine Gruppe von Zeilen (jdedenfalls nicht mit Boardmitteln, sondern allenfalls per Basic-Programmierung). Ok das habe ih mir eingetlich schon gedacht.
Dann meine ich nach dem Überfliegen des anderen Threads, dass es da nicht genau um meine Problemstellung geht (auch wenn man mit den dortigen Überlegungen wohl auch diesem Problem näher kommt).
Also wenn man mehrere Zelen per Makro ausblenden kann, dann bräuchte ich wohl folgende beiden Programme:
1. Programm
Für die Zeilen x bis y (am besten wäre: x = 1 Zeile des Druckbereichs und y = letzte Zeile des Druckbereichs)
Wenn in Spalte Salte F ein bestimmtes Datum ist (nämlich =T$3+V$3)
dann ausgeblendet lassen
sonst einblenden
Ende
2. Programm
Für die Zeilen x bis y (am besten wäre: x = 1 Zeile des Druckbereichs und y = letzte Zeile des Druckbereichs)
Wenn in Spalte D Inhalt ist (Inhalt = Zahlen)
dann eingeblendet lassen
sonst ausblenden
Ende
Ich mag Dich auch, wenn Du Dir nicht die Mühe machst!

Gruß - Mr.Ioes
Warum testest Du das nicht mal ich hätte das jetzt beinahe geglaubt. Ich kann z.B.:zunächst heißt demnach die Antwort auf meine Frage: Ein- und Ausblenden kann man nur (hintereinander) einzelne Zeilen und nicht eine Gruppe von Zeilen (jdedenfalls nicht mit Boardmitteln, sondern allenfalls per Basic-Programmierung). Ok das habe ih mir eingetlich schon gedacht.
(a) Zeile 1 ,3 ,5 markieren und gleichzeitig ausblenden
(b) Zeile 1, 3-5, 7 markieren und gleichzeitig ausblenden
(c) Zeile 1-10 markieren und gleichzeitig ausblenden
Ich habe Dir das jetzt so hingeschrieben wie Du es wolltest:
Code: Alles auswählen
Sub programm_1
'die Spalte in welcher die zu prüfende Zelle steht
'hier eintragen. Spalte 1 (Spalte A) entspricht 0
vorgabe = 5
'Druckbereich eintragen
anfang = 1 'Zeilennummer angeben
ende = 15 'Zeilennummer angeben
x1 = ThisComponent.Sheets.GetByName("Tabelle1").getCellRangeByName("$T$3").Value
x2 = ThisComponent.Sheets.GetByName("Tabelle1").getCellRangeByName("$V$3").Value
xg = x1 + x2
min_zeile = anfang - 1
max_zeile = ende - 1
For x = min_zeile to max_zeile
If ThisComponent.Sheets.GetByName("Tabelle1").getCellByPosition(vorgabe, x).Value <> xg Then
ThisComponent.Sheets.GetByName("Tabelle1").Rows(x).isVisible = True
End if
Next x
End sub
Sub programm_2
'die Spalte in welcher die zu prüfende Zelle steht
'hier eintragen. Spalte 1 (Spalte A) entspricht 0
vorgabe = 3
'Druckbereich eintragen
anfang = 1 'Zeilennummer angeben
ende = 10 'Zeilennummer angeben
'Vorgabe für Zahlenwert
xg = 123
min_zeile = anfang - 1
max_zeile = ende - 1
For x = min_zeile to max_zeile
If ThisComponent.Sheets.GetByName("Tabelle1").getCellByPosition(vorgabe, x).Value <> xg Then
ThisComponent.Sheets.GetByName("Tabelle1").Rows(x).isVisible = False
End if
Next x
End sub
Ich verstehe nur nicht was die Summe zweier Datumswerte praktisch für einen Sinn machen soll? Denn die Summe zweier Daten ist die Summe der Zeitwerte also 23.08.03 + 12.09.03 = 06.05.07 und was soll das sein?
Gruß
Stephan
Schande über mich und Asche auf mein Haupt.Stephan hat geschrieben:... Warum testest Du das nicht mal

Es handelt sich bei mir allerdings um so viele nicht zusammenhänge Zeilen (> 15), dass ich sie gerne gespeichert hätte, um nicht immer markieren zu müssen. Aber für die allermeisten Fälle reicht das Markieren völlig.
Komplizierte Geschichte: Also meine Tabellen sind immer auf ein bestimmtes Jahr bezogen. Um das zu "initialisieren" schreibe ich per Hand außerhalb des Druckbereichs den 1. Januar und den 31. Dezember des Jahres in zwei Zellen. Die unmittelbar dahinterliegene Zelle (= "V$3") rechnet die Tage aus.Stephan hat geschrieben:... Ich verstehe nur nicht was die Summe zweier Datumswerte praktisch für einen Sinn machen soll? Denn die Summe zweier Daten ist die Summe der Zeitwerte also 23.08.03 + 12.09.03 = 06.05.07 und was soll das sein?
Geprüft wird ob der 1. Januar des Folgejahres in der Zelle steht. Dazu kommt es weil ich sich um ein Einzugsdatum handelt, das mit der Formel Auszugsdatum + 1 Vorbelegt ist.
Ich komme erst gleich dazu die Programme auszuprobieren. Schon mal vielen, vielen Dank!
Gruß - Mr.Ioes
Hallo Stephan,
zum zweiten Programm: Was ich vergleichen will ist, ob in der jeweiligen Zelle überhaupt ein Inhalt ist und nicht, ob da eine bestimmte Zahl steht (zumal ich jezt doch lieber eine andere Spalte nehmen möchte, in der gewöhnlich Zeichenketten stehen).
Mit x = NULL geht´s nicht.
Du weißt das doch bestimmt wie ich das hinkriegen kann. Bütte.
Gruß - Mr.Ioes
Verständnisnachfrage: Was heißt:
min_zeile = anfang - 1
max_zeile = ende - 1
bzw. was bedeutet das "- 1" dabei?
zum zweiten Programm: Was ich vergleichen will ist, ob in der jeweiligen Zelle überhaupt ein Inhalt ist und nicht, ob da eine bestimmte Zahl steht (zumal ich jezt doch lieber eine andere Spalte nehmen möchte, in der gewöhnlich Zeichenketten stehen).
Mit x = NULL geht´s nicht.
Du weißt das doch bestimmt wie ich das hinkriegen kann. Bütte.

Gruß - Mr.Ioes
Verständnisnachfrage: Was heißt:
min_zeile = anfang - 1
max_zeile = ende - 1
bzw. was bedeutet das "- 1" dabei?
ob in der jeweiligen Zelle überhaupt ein Inhalt ist und nicht
Code: Alles auswählen
ThisComponent.Sheets.GetByName("Tabelle1").getCellByPosition(vorgabe, x).Type = com.sun.star.table.CellContentType.EMPTY
Du solltest als Zeilen die Nummern angeben die Du siehst, erste Zeile ist also 1. Die Zählung in Basic beginnt jedoch immer bei Zeile 0. -1 berücksichtigt das als Korrektur.Verständnisnachfrage: Was heißt:
min_zeile = anfang - 1
max_zeile = ende - 1
Gruß
Stephan