CALC:Zeilen ausblenden
Moderator: Moderatoren
CALC:Zeilen ausblenden
Hallo,
ich möchte einige Zeilen (z.B. 10-15) ausblenden, wenn im Feld B3 ein bestimmtes Wort steht, z.B. "Hund".
Steht dort das Wort "Katze", dann sollen andere Zeilen ausgeblendet werden (z.B. 16-20).
Ich habe den allwissenden google befragt und auch hier im Forum gesucht, jedoch konnte ich mit den Treffern nichts anfangen. Verstehe Basic nicht mehr.
Über Hilfe wäre ich also sehr glücklich.
Besten Dank.
Moderation,4: verschoben in BASIC-Unterbereich, wo alle Makro-Fragen hin gehören; Betreff angepasst
ich möchte einige Zeilen (z.B. 10-15) ausblenden, wenn im Feld B3 ein bestimmtes Wort steht, z.B. "Hund".
Steht dort das Wort "Katze", dann sollen andere Zeilen ausgeblendet werden (z.B. 16-20).
Ich habe den allwissenden google befragt und auch hier im Forum gesucht, jedoch konnte ich mit den Treffern nichts anfangen. Verstehe Basic nicht mehr.
Über Hilfe wäre ich also sehr glücklich.
Besten Dank.
Moderation,4: verschoben in BASIC-Unterbereich, wo alle Makro-Fragen hin gehören; Betreff angepasst
Re: Hilfe für Makro zum Zeilenausblenden gesucht
Hallo
Nimm in einer Hilfspalte in den Zeilen 10-15 die Formel =$B$3="Hund" in Zeile 16-20 das selbe in "Katze" und füll den Rest mit 0 soweit wie nötig.
Das Aus-/Einblenden regelst du dann per →Daten→Filter→Standardfilter : $Hilfspalte ungleich 1
Karo
Nimm in einer Hilfspalte in den Zeilen 10-15 die Formel =$B$3="Hund" in Zeile 16-20 das selbe in "Katze" und füll den Rest mit 0 soweit wie nötig.
Das Aus-/Einblenden regelst du dann per →Daten→Filter→Standardfilter : $Hilfspalte ungleich 1
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: Hilfe für Makro zum Zeilenausblenden gesucht
Hallo Karolus,
das war eine gute Idee, habe einige Zeit damit experimentiert. leider aktualisiert sich der Autofilter jedoch nicht permanent. Wenn ich im Auswahlfeld B3 statt "Hund" jetzt "Katze" oder "Maus" eingebe, dann passiert nichts in der Autofilterspalte. Ich möchte erreichen, dass bestimmte Zeilen verschwinden, wenn man in B3 einen von 4 verschiedenen Begriffen auswählt.
das war eine gute Idee, habe einige Zeit damit experimentiert. leider aktualisiert sich der Autofilter jedoch nicht permanent. Wenn ich im Auswahlfeld B3 statt "Hund" jetzt "Katze" oder "Maus" eingebe, dann passiert nichts in der Autofilterspalte. Ich möchte erreichen, dass bestimmte Zeilen verschwinden, wenn man in B3 einen von 4 verschiedenen Begriffen auswählt.
Re: Hilfe für Makro zum Zeilenausblenden gesucht
Hi,
anbei ein Beispiel mit Listenfeld und Makro.
Die Zeilen kannst Du auf Tabelle2 einstellen.
Viel Spaß, Gruß R
anbei ein Beispiel mit Listenfeld und Makro.
Die Zeilen kannst Du auf Tabelle2 einstellen.
Viel Spaß, Gruß R
- Dateianhänge
-
- Zellbereiche_ausblenden.ods
- (13.54 KiB) 485-mal heruntergeladen
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: CALC:Zeilen ausblenden
Hallo
@F3K Total:
Mit Python gehts schneller - ok ich hab die Einstellungen im Quelltext hinterlegt.
Sourcecode:
Karo
@F3K Total:
Mit Python gehts schneller - ok ich hab die Einstellungen im Quelltext hinterlegt.

Sourcecode:
Code: Alles auswählen
fstring = "A%s:A%s"
hideranges = {
"Hans": fstring % (5, 10), # Zeilen 5 bis 10
"Heiner": fstring % (10, 14), #Zeilen 11 bis 15
"August": fstring % (15, 20) #usw.
}
def hide_rows_depend_on_B4( event ):
"""
blendet die zu dem Namen gehörenden Zeilen
aus dem Dictionary oben aus -
es muss mit dem Tabellenereignis "Inhalt geändert"
verknüpft werden
"""
sheet = event.getSpreadsheet()
if event.AbsoluteName == '$%s.$%s' %( sheet.Name, "B$4" ):
sname = event.getString()
namerange = sheet.getCellRangeByName
for key , nrange in hideranges.items():
rows = namerange( nrange ).Rows
rows.IsVisible = key != sname
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 ausblenden
OK,
auch wenn ich die Einstellungen im Quelltext hinterlege ist Python schneller.
Wie komme ich im Dokument an den Quelltext?
Gruß R
auch wenn ich die Einstellungen im Quelltext hinterlege ist Python schneller.
Wie komme ich im Dokument an den Quelltext?
Gruß R
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: CALC:Zeilen ausblenden
Hallo
Ps. Mit Hilfe der Extensions"Editorkicker" und "ModifiedScriptProvider" von Hanya ( dem Entwickler von MRI ! ) ist das Einbetten von Pythonscripts mit ein paar Mausklicks erledigt. Lediglich das direkte Laden und Bearbeiten eines eingebetten Scripts funktioniert nicht, man braucht halt eine Arbeitskopie vorzugsweise unter ~/user/Scripts/python/...
Karo
Entpacke die Datei in einen neuen Ordner ( mit 7 zip oder ähnlichem ) und wechsle in den Unterordner ~Scripts/python/Wie komme ich im Dokument an den Quelltext?
Ps. Mit Hilfe der Extensions"Editorkicker" und "ModifiedScriptProvider" von Hanya ( dem Entwickler von MRI ! ) ist das Einbetten von Pythonscripts mit ein paar Mausklicks erledigt. Lediglich das direkte Laden und Bearbeiten eines eingebetten Scripts funktioniert nicht, man braucht halt eine Arbeitskopie vorzugsweise unter ~/user/Scripts/python/...
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 ausblenden
Hallo F3K total,
danke für die Datei. Das ist schon ein großer Schritt nach vorne. Leider verstehe ich die Programmiersprache einfach nicht. Ich erkenne nicht, wo ich die Zeilenposition eingebe, in der sich mein Auswahlfeld befindet. Daher bin ich leider nicht in der Lage, die Vorlage zu individualisieren.
Eingabe und Ausgabe befinden sich im selben Reiter. Das Dropdownfeld befindet sich in der Zelle C16.
Wenn dort steht: Hund, dann sollen die Zeilen 18 bis 22 ausgeblendet werden
wenn dort steht: Katze, dann sollen die Zeilen 18 bis 22 und 40 bis 46 ausgeblendet werden
wenn dort steht: Maus, dann sollen die Zeilen 40 bis 46 ausgeblendet werden
Über eine erneute Hilfe wäre ich ergebends dankbar
danke für die Datei. Das ist schon ein großer Schritt nach vorne. Leider verstehe ich die Programmiersprache einfach nicht. Ich erkenne nicht, wo ich die Zeilenposition eingebe, in der sich mein Auswahlfeld befindet. Daher bin ich leider nicht in der Lage, die Vorlage zu individualisieren.
Eingabe und Ausgabe befinden sich im selben Reiter. Das Dropdownfeld befindet sich in der Zelle C16.
Wenn dort steht: Hund, dann sollen die Zeilen 18 bis 22 ausgeblendet werden
wenn dort steht: Katze, dann sollen die Zeilen 18 bis 22 und 40 bis 46 ausgeblendet werden
wenn dort steht: Maus, dann sollen die Zeilen 40 bis 46 ausgeblendet werden
Über eine erneute Hilfe wäre ich ergebends dankbar

Re: CALC:Zeilen ausblenden
Hallo
Ich häng noch mal ein überarbeitetes Beispiel an, die Einstellungen werden aus Tabelle2.A2:B20 bezogen. und der Quellcode:
Ich häng noch mal ein überarbeitetes Beispiel an, die Einstellungen werden aus Tabelle2.A2:B20 bezogen. und der Quellcode:
Code: Alles auswählen
context = XSCRIPTCONTEXT
def einstellungen():
"""
Bezieht die Einstellungen aus Tabelle2.A2:A20
Spalte A Spalte B
von-bis Name,Name2,etc.
usw....
"""
doc = context.getDocument()
esheet = doc.Sheets.getByIndex(1) #Tabelle2
drange = esheet.getCellRangeByName("A2:B20")
rawdata = drange.getDataArray()
ddict = {}
for row in rawdata:
if row[0]:
first, last = row[0].split('-')
key = 'A%s:A%s' % (first, last)
ddict[ key ] = row[1].split(',')
return ddict
def hide_rows_depend_on_B4( event ):
"""
blendet die zu dem Namen gehörenden Zeilen
aus den Einstellungen aus -
es muss mit dem Tabellenereignis "Inhalt geändert"
verknüpft werden
"""
hideranges = einstellungen()
sheet = event.getSpreadsheet()
if event.AbsoluteName == '$%s.$%s' %( sheet.Name, "B$4" ):
sname = event.getString()
namerange = sheet.getCellRangeByName
for key , animals in hideranges.items():
rows = namerange( key ).Rows
rows.IsVisible = sname not in animals
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 ausblenden
Hallo hansolo,
von
Gerade habe ich gesehen, dass Karolus mit seiner Lösung schneller war,ich möchte Dir aber meine Basic-Lösung nicht vorenthalten.
Auch hier werden die Einstellungen in Tabelle2 vorgenommen.
Gruß R
von
war bislang keine Rede. Es handelt sich um zwei Bereiche. Da muss das Makro anders aufgebaut werden.hansolo hat geschrieben:dann sollen die Zeilen 18 bis 22 und 40 bis 46 ausgeblendet werden
Gerade habe ich gesehen, dass Karolus mit seiner Lösung schneller war,ich möchte Dir aber meine Basic-Lösung nicht vorenthalten.
Auch hier werden die Einstellungen in Tabelle2 vorgenommen.
Gruß R
- Dateianhänge
-
- Zellbereiche_ausblenden_zwei_Bereiche.ods
- (12.34 KiB) 267-mal heruntergeladen
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: CALC:Zeilen ausblenden
Hallo F3K total,
danke, genau das ist es. Anfangs ist das Auswahlfeld schrittweise nach oben gerutscht, wenn man mehrmals damit ausgewählt hat, ich konnte es jedoch dann fest positionieren.
Hätte nicht gedacht, dass es so kompliziert ist (jedenfalls für mich). Nochmals vielen Dank.
Ein Problem besteht allerdings jetzt: wenn ich irgendwo auf der Seite eine Eingabe mache, z. B. in den Zeilen darüber oder in den Zeilen, die durch das Makro gezeigt werden, dann erscheint durch das Makro eine Fehlermeldung: "Eigenschaften oder Methode nicht gefunden: Source".
Wie kann ich das verhindern oder unterdrücken?
Grüße
danke, genau das ist es. Anfangs ist das Auswahlfeld schrittweise nach oben gerutscht, wenn man mehrmals damit ausgewählt hat, ich konnte es jedoch dann fest positionieren.
Hätte nicht gedacht, dass es so kompliziert ist (jedenfalls für mich). Nochmals vielen Dank.
Ein Problem besteht allerdings jetzt: wenn ich irgendwo auf der Seite eine Eingabe mache, z. B. in den Zeilen darüber oder in den Zeilen, die durch das Makro gezeigt werden, dann erscheint durch das Makro eine Fehlermeldung: "Eigenschaften oder Methode nicht gefunden: Source".
Wie kann ich das verhindern oder unterdrücken?
Grüße
Re: CALC:Zeilen ausblenden
ups, mein Fehler, es ist unter den Tabellenereignissen fälschlicherweise noch das Makro eingetragen.
Du gehst mit der rechten Maustaste auf den Tabellenreiter "Tabelle1"->"Tabellenereignisse..." und wählst die Zeile "Inhalt geändert", klickst auf "entfernen" und "OK", speichern fertig.
Gruß R
Du gehst mit der rechten Maustaste auf den Tabellenreiter "Tabelle1"->"Tabellenereignisse..." und wählst die Zeile "Inhalt geändert", klickst auf "entfernen" und "OK", speichern fertig.
Gruß R
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: CALC:Zeilen ausblenden
Ihr seit die Größten. Es funktioniert. ich bin begeistert. Weil ich diese Funktion so großartig finde, habe ich mir gleich gedacht, dann kann ich in einem weiteren Reiter ebenfalls mit der Eingabe einige Zeilen ausblenden. Ich habe den Code entsprechend erweitert und auch weitestgehend angepasst.
Jedoch blendet er in dem zusätzlichen Reiter nicht alle Zeilen ein, wenn ich nichts ausgewählt habe (Auswahlfeld "alle").
Hier mal der Code, was habe ich falsch gemacht?
Jedoch blendet er in dem zusätzlichen Reiter nicht alle Zeilen ein, wenn ich nichts ausgewählt habe (Auswahlfeld "alle").
Hier mal der Code, was habe ich falsch gemacht?
Code: Alles auswählen
REM ***** BASIC *****
Sub ein_ausblenden (event)
sitem = event.source.selectedItem
osheet2 = thisComponent.sheets.getbyname("Tabelle2")
for i = 1 to 5
ocell = osheet2.getcellbyposition(0,i)
oStartcell1 = osheet2.getcellbyposition(1,i)
oEndcell1 = osheet2.getcellbyposition(2,i)
oStartcell2 = osheet2.getcellbyposition(3,i)
oEndcell2 = osheet2.getcellbyposition(4,i)
sText = ocell.string
if sText = sitem then
nstartrow1 = oStartcell1.value
nEndrow1 = oEndcell1.value
nstartrow2 = oStartcell2.value
nEndrow2 = oEndcell2.value
endif
next i
osheet1 = thisComponent.sheets.getbyname("Tabelle1")
ocursor = osheet1.createcursor
ocursor.gotoendofusedarea(false)
nEndusedrows = ocursor.rangeaddress.EndRow
for i = 0 to nEndusedrows
orow = osheet1.Rows(i)
orow.IsVisible = true
next i
if sitem = "alle" then exit sub
for i = nstartrow1-1 to nEndrow1-1
orow = osheet1.Rows(i)
orow.IsVisible = false
next i
if not isnull(nstartrow2) then
for i = nstartrow2-1 to nEndrow2-1
orow = osheet1.Rows(i)
orow.IsVisible = false
next i
endif
sitem = event.source.selectedItem
osheet2 = thisComponent.sheets.getbyname("Datenblatt")
for i = 1 to 5
ocell = osheet2.getcellbyposition(5,i)
oStartcell1 = osheet2.getcellbyposition(6,i)
oEndcell1 = osheet2.getcellbyposition(7,i)
oStartcell2 = osheet2.getcellbyposition(8,i)
oEndcell2 = osheet2.getcellbyposition(9,i)
sText = ocell.string
if sText = sitem then
nstartrow1 = oStartcell1.value
nEndrow1 = oEndcell1.value
nstartrow2 = oStartcell2.value
nEndrow2 = oEndcell2.value
endif
next i
osheet1 = thisComponent.sheets.getbyname("Tabelle3")
ocursor = osheet1.createcursor
ocursor.gotoendofusedarea(false)
nEndusedrows = ocursor.rangeaddress.EndRow
for i = 0 to nEndusedrows
orow = osheet1.Rows(i)
orow.IsVisible = true
next i
if sitem = "alle" then exit sub
for i = nstartrow1-1 to nEndrow1-1
orow = osheet1.Rows(i)
orow.IsVisible = false
next i
if not isnull(nstartrow2) then
for i = nstartrow2-1 to nEndrow2-1
orow = osheet1.Rows(i)
orow.IsVisible = false
next i
endif
End Sub
Re: CALC:Zeilen ausblenden
Das hängt von einigen Dingen ab:
1.) Sollen auf dem weiteren Blatt genau die gleichen Zeilen ausgeblendet werden oder sollen es andere sein?
2.) Wenn es andere sein sollen, wo werden sie definiert?
Am besten lädst Du ein ggf. verfremdetes Beispieldokument hoch.
Gruß R
1.) Sollen auf dem weiteren Blatt genau die gleichen Zeilen ausgeblendet werden oder sollen es andere sein?
2.) Wenn es andere sein sollen, wo werden sie definiert?
Am besten lädst Du ein ggf. verfremdetes Beispieldokument hoch.
Gruß R
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: CALC:Zeilen ausblenden
Hallo
Im angehängten Beispiel können alle Argumente für jedes Tabellenblatt individuell eingestellt werden, die Einstellungen werden im ersten Tabellenblatt ("Einstellungen" ) eingetragen. Ps. Quellcode:
Karo
Im angehängten Beispiel können alle Argumente für jedes Tabellenblatt individuell eingestellt werden, die Einstellungen werden im ersten Tabellenblatt ("Einstellungen" ) eingetragen. Ps. Quellcode:
Code: Alles auswählen
import re
from itertools.chain import from_iterable as flat
context = XSCRIPTCONTEXT
absrex = re.compile( r'([A-Z]+)(\d+)' )
def ausblenden_wenn( event ):
"""
Muss mit dem Tabellenereignis: 'Inhalt geändert'
verknüpft werden.
Bezieht die Einstellungen aus der ersten Tabelle
erste Zeile: Tabellennamen
zweite Zeile: die zu überwachenden Zelladressen
Spalte A: Die Namen ...
B3 bis ??: ... für die Zeilen 'n;m'
"""
targetsheet = event.getSpreadsheet()
doc = context.getDocument()
esheet = doc.Sheets.getByIndex(0) #Einstellungen
sheetsrange = esheet.getCellRangeByName("A1:Z1")
sheetnames = list( flat(sheetsrange.getDataArray()) )
col_i = sheetnames.index( targetsheet.Name )
which = esheet.getCellByPosition( col_i, 1).getString()
which = absrex.sub( r'$\1$\2', which )
if event.AbsoluteName == '$%s.%s' %( targetsheet.Name, which ):
targetsheet.Rows.IsVisible = True
patternrange = esheet.getCellRangeByName("A3:A300")
patterns = flat( patternrange.getDataArray())
hideranges = esheet.getCellRangeByPosition( col_i, 2, col_i, 299 )
hides = flat( hideranges.getDataArray())
to_hide = [ data.split(";") for data, fname in zip(hides, patterns)
if fname == event.getString() and data ]
for elem in to_hide:
a, b = elem
nrange = 'A%s:A%s' % (a, b)
rows = targetsheet.getCellRangeByName( nrange ).Rows
rows.IsVisible = False
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)