Seite 1 von 1

Re: Über Optionsfeld Zeilen per Makro einblenden

Verfasst: Do, 25.02.2016 10:20
von mikeleb
Hallo,

ein bisschen Geduld ... :)
Dein Codeschnipsel deutet auf MS VBA hin, was unter LO so nicht funktionieren wird.
Anbei mal ein Beispiel mit 5 Optionsfeldern. Je nachdem, welches Optionsfeld angewählt wird, werden die entsprechenden Zeilen ein- bzw. ausgeblendet. Welche Zeilen es betrifft ist im Makro festgelegt.

Re: Über Optionsfeld Zeilen per Makro einblenden

Verfasst: So, 28.02.2016 14:15
von mikeleb
Hallo,

ich habe das Problem mal zum Anlass genommen, mein erstes Python-Makro zu schreiben.

Code: Alles auswählen

def p_einblenden(oevent):
#	Welches Optionsfeld wurde angeklickt?
	sname=oevent.Source.Model.Name
#	Nummer des Optionsfeldes?
	nr=int(sname[-1:])
#	Zugriff auf das Dokument, Tabelle1
	oDoc= XSCRIPTCONTEXT.getDocument()
	oTab=oDoc.Sheets.getByIndex(0)
#	Festlegung der Zeilen, ein Bereich für jedes Optionsfeld, jeweils erste und letzte Zeile oder nur einzelne Zeile
	zeilen=((11,13),(15,17),(19,23),(25,),(30,34))
#	Durchlauf durch alle Bereiche, ein- bzw- ausblenden
	z=0
	for i in zeilen:
		z=z+1
		for k in range(i[0],i[len(i)-1]+1):
			oTab.Rows.getByIndex(k-1).IsVisible=(z==nr)
Wahrscheinlich lässt sich das ein oder andere noch effektiver lösen, aber es funktioniert. Hurra! :D
Dank an preklov und karolus (viewtopic.php?f=18&t=66796)!

Re: Über Optionsfeld Zeilen per Makro einblenden

Verfasst: Mo, 29.02.2016 02:09
von Karolus
Hallo

Ja, es geht nochwas:

Schreibt ins Feld "Zusatzinfo" der Optionsbuttons entsprechende Addressbereichseinträge
für LO 13:17 →Zeile 13 bis 17
Aoo A13:A17
! auch bei einzelnen Zellen 25:25 mit Doppelpunkt !!

Code: Alles auswählen

def einblenden(event):
    buttons = event.Source.Model.Parent
    doc = buttons.Parent.Parent
    sheet = doc.CurrentSelection.Spreadsheet
    for i in range( buttons.Count):
        button = buttons.getByIndex(i)
        tag = button.Tag
        state = button.State
        sheet.getCellRangeByName(tag).Rows.IsVisible = state
Ps: Ich freue mich riesig wenn ein paar Leute, endlich mal anfangen mit python, lasst euch bitte nicht abschrecken von meinen Verbesserungsvorschlägen.



Ich hatte gehofft über das Ereignis `Status geändert` auch die `for...`-Schleife einzusparen,aber leider wird die Funktion nur bei Statuserhalt ausgeführt nicht jedoch wenn ein Button den Status verliert.

Re: Über Optionsfeld Zeilen per Makro einblenden

Verfasst: Mo, 29.02.2016 18:40
von mikeleb
Hallo karolus,
von meinen Verbesserungsvorschlägen
Ich bitte ausdrücklich darum! 8)