Zeile ausblenden, wenn Datum in best. Zelle eingetragen

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

Moderator: Moderatoren

Karolus
********
Beiträge: 7440
Registriert: Mo, 02.01.2006 19:48

Re: Zeile ausblenden, wenn Datum in best. Zelle eingetragen

Beitrag von Karolus »

Hallo

Lösung:
  • Markiere Spalte V und gehe zu →Daten→Autofilter
    Benutze die Drop-Down -auswahl in Zelle V1 …
Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Karolus
********
Beiträge: 7440
Registriert: Mo, 02.01.2006 19:48

Re: Zeile ausblenden, wenn Datum in best. Zelle eingetragen

Beitrag 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
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Karolus
********
Beiträge: 7440
Registriert: Mo, 02.01.2006 19:48

Re: Zeile ausblenden, wenn Datum in best. Zelle eingetragen

Beitrag 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) 138-mal heruntergeladen
Hier nochmal eine Testdatei die auch mit LO<5.1 oder AOO zurechtkommt.
DatenAusblenden_AOO.ods
für alle Versionen
(9.79 KiB) 250-mal heruntergeladen
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
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Karolus
********
Beiträge: 7440
Registriert: Mo, 02.01.2006 19:48

Re: Zeile ausblenden, wenn Datum in best. Zelle eingetragen

Beitrag 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!
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Zeile ausblenden, wenn Datum in best. Zelle eingetragen

Beitrag 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
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Zeile ausblenden, wenn Datum in best. Zelle eingetragen

Beitrag 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
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Zeile ausblenden, wenn Datum in best. Zelle eingetragen

Beitrag 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
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Zeile ausblenden, wenn Datum in best. Zelle eingetragen

Beitrag 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
Antworten