Seite 1 von 1
Re: Zeile ausblenden, wenn Datum in best. Zelle eingetragen
Verfasst: Di, 25.10.2016 13:01
von Karolus
Hallo
Lösung:
- Markiere Spalte V und gehe zu →Daten→Autofilter
Benutze die Drop-Down -auswahl in Zelle V1 …
Karolus
Re: Zeile ausblenden, wenn Datum in best. Zelle eingetragen
Verfasst: Di, 25.10.2016 14:48
von Karolus
Hallo
Nagut - dann liefere ich mal den Pythoncode für den Button. (funktioniert in LO5.2)
Code: Alles auswählen
def toggle_dates(event):
button = event.Source.Model
show, hide = "Daten einblenden", "Daten ausblenden"
sheet = button.Parent.Parent.Parent.CurrentSelection.Spreadsheet
if button.Label == show:
sheet.Rows.IsVisible = True
button.Label = hide
return
button.Label = show
V_col = sheet.Columns.V
dates = V_col.queryContentCells( 2 )
for date in dates:
date.Rows.IsVisible = False
Karolus
Re: Zeile ausblenden, wenn Datum in best. Zelle eingetragen
Verfasst: Di, 25.10.2016 17:01
von Karolus
Hallo
Welches Office verwendest du Libreoffice oder AOO?, welche Version?
benötigst du das nur für ein bestimmtes Dokument?
Ich hänge mal ein Testdokument mit integriertem Pythonscript an.
- DatenAusblenden.ods
- funktioniert vmtl. nur mit Libreoffice >5.1
- (9 KiB) 150-mal heruntergeladen
Hier nochmal eine Testdatei die auch mit LO<5.1 oder AOO zurechtkommt.
Und der Sourccode zur letzteren:
Code: Alles auswählen
def yieldparts(container):
econtainer = container.createEnumeration()
while econtainer.hasMoreElements():
yield econtainer.nextElement()
def toggle_dates(event):
button = event.Source.Model
show, hide = "Daten einblenden", "Daten ausblenden"
sheet = button.Parent.Parent.Parent.CurrentSelection.Spreadsheet
if button.Label == show:
sheet.Rows.IsVisible = True
button.Label = hide
return
button.Label = show
f_col = sheet.Columns.V
dates = f_col.queryContentCells(2)
dates = yieldparts(dates)
for date in dates:
date.Rows.IsVisible = False
Re: Zeile ausblenden, wenn Datum in best. Zelle eingetragen
Verfasst: Di, 25.10.2016 19:04
von Karolus
Coco_braucht_Hilfe hat geschrieben:Jetzt wird ein wenig mehr klarer, Danke!
Version ist LibreOffice <5.1
Allerdings komme ich immer noch nicht in das passende Fenster um ein Phytonscript anzulegen.
Aus der grafischen Oberfläche hat bietet das LO auch nicht an … da musst du schon mit einem Texteditor deiner Wahl das Script im Pfad
<deine Lo-Benutzerkonfiguration>/Scripts/python/<dateiname_deiner_wahl>.py speichern.
Coco_braucht_Hilfe hat geschrieben: Mit LibreOffice Basic geht das nicht oder?
Natürlich geht das auch mit Basic!
Re: Zeile ausblenden, wenn Datum in best. Zelle eingetragen
Verfasst: Di, 29.11.2016 22:50
von Stephan
Die Testdatei von hier mit Python funktioniert bei mir leider nicht... da scheint auch was geblockt zu werden.
Die Datei funktioniert bei mir. Ist denn bei Dir die Ausführung von Makros aktiviert? Extras-Einstellungen-LibreOffice-Sicherheit-Makrosicherheit sollte höchstens auf mittel stehen.
Gruß
Stephan
Re: Zeile ausblenden, wenn Datum in best. Zelle eingetragen
Verfasst: Mi, 30.11.2016 17:03
von Stephan
zu dem Python-Script müsste Karolus sagen woher die Probleme rühren können.
Ich Basic geht das Ausblenden von Zeilen/Spalten wie z.B. hier gezeigt:
http://www.dannenhoefer.de/faqstarbasic ... enden.html
Gruß
Stephan
Re: Zeile ausblenden, wenn Datum in best. Zelle eingetragen
Verfasst: Mi, 30.11.2016 18:28
von Stephan
Da kommt aber leider noch eine Fehlermeldung.
eine Spalte kann keinen Wert haben, nur eine Zelle in einer Spalte kann einen Wert haben, z.B.:
Code: Alles auswählen
Sub Ausblenden
oSheet = thisComponent.sheets(0)
if oSheet.getCellrangeByName("G1").Value > 0 then
oZeile = oSheet.getrows().getByIndex(8)
oZeile.isVisible = False
End If
End Sub
Gruß
Stephan
Re: Zeile ausblenden, wenn Datum in best. Zelle eingetragen
Verfasst: Fr, 02.12.2016 10:41
von Stephan
SCHLECHT: das wieder einblenden funktioniert nicht... was habe ich da vergessen?
bei mir funktioniert das Einblenden.
Allerdings halte ich das ganze Makro wegen der Schleife:
for zi = 3 to 990000
für nicht praktikabel, denn diese Schleife läuft hier, wegen ihres Umfangs, einige Minuten.
Wie eine praktikable Lösung aussieht hängt von der genauen Absicht ab,
wahrscheinlich sollte man auf Wertänderungen in der betroffenen Spalte direkt reagieren, weil
wahrscheinlich gleichzeitig immer nur einzelne Wertänderungen erfolgen.
Gruß
Stephan