Spalten ausblenden/einblenden mit einem Button
Moderator: Moderatoren
Spalten ausblenden/einblenden mit einem Button
Hallo werte Community,
ich bin leider nicht besonders bewandert was programmiertechnische Sachen angeht und habe folgendes Problem:
Ich möchte in Open office Calc verschiedene Buttons erstellen, die je nachdem in welcher Stellung sie sich befinden, eine von mir gewünschte Spalte ein- oder ausblenden
Die Buttons sollen sich untereinander am linken Bildschirmrand befinden, z.B 5 Stück davon.
Der erste heißt "Sorte ein/aus" und blendet Spalte G ein/aus
Der zweite heißt "Zeitpunkt ein/aus" und blendet Spalte H ein/aus
Der dritte [...] blendet Spalte I ein/aus usw.
Ich habe bereits (Um-)Schaltflächen erstellt und es ist mir damit auch gelungen, Spalten auszublenden (über Makro aufzeichnen und der jeweiligen Fläche zuweisen), allerdings gelingt es mir nicht, diese mit demselben Button wieder einzublenden, weil ich nicht weiß wie man eine Wenn Funktion (?) einbaut und mit welchem Befehl man abfragen kann, in welcher Stellung sich der Button befindet. Ich habe mir seit Tagen einen Wolf gesucht und scheinbar ähnliche Themen gefunden, da ich von Visual Basic aber recht wenig verstehe und häufig den Wald vor lauter Bäumen nicht sehe, ist es einfach schwierig für mich sowas umzusetzen.
Kann jemand von euch einem absoluten Laien bei sowas weiterhelfen?
freundliche Grüße Rav.
ich bin leider nicht besonders bewandert was programmiertechnische Sachen angeht und habe folgendes Problem:
Ich möchte in Open office Calc verschiedene Buttons erstellen, die je nachdem in welcher Stellung sie sich befinden, eine von mir gewünschte Spalte ein- oder ausblenden
Die Buttons sollen sich untereinander am linken Bildschirmrand befinden, z.B 5 Stück davon.
Der erste heißt "Sorte ein/aus" und blendet Spalte G ein/aus
Der zweite heißt "Zeitpunkt ein/aus" und blendet Spalte H ein/aus
Der dritte [...] blendet Spalte I ein/aus usw.
Ich habe bereits (Um-)Schaltflächen erstellt und es ist mir damit auch gelungen, Spalten auszublenden (über Makro aufzeichnen und der jeweiligen Fläche zuweisen), allerdings gelingt es mir nicht, diese mit demselben Button wieder einzublenden, weil ich nicht weiß wie man eine Wenn Funktion (?) einbaut und mit welchem Befehl man abfragen kann, in welcher Stellung sich der Button befindet. Ich habe mir seit Tagen einen Wolf gesucht und scheinbar ähnliche Themen gefunden, da ich von Visual Basic aber recht wenig verstehe und häufig den Wald vor lauter Bäumen nicht sehe, ist es einfach schwierig für mich sowas umzusetzen.
Kann jemand von euch einem absoluten Laien bei sowas weiterhelfen?
freundliche Grüße Rav.
Re: Spalten ausblenden/einblenden mit einem Button
Hallo und willkommen im Forum,
Dazu gibt es einen winzigen programmiertechnischen Kniff, mit dem der aktuelle Zustand einfach "umgedreht" wird:
Viel Erfolg! Jürgen
Der Weg über "Makro aufzeichnen" ist leider oft nicht der beste Weg. Als erstes solltest du die Hilfsmittel durchlesen, die unter Informationen zur StarBasic-Programmierung (oberster Beitrag in diesem Unterforum) aufgeführt sind. Gerade für einfache Probleme führen Dannenhöfers FAQ oft am schnellsten zum Ziel wie bei Wie kann man Zeilen oder Spalten ausblenden.Rav hat geschrieben:Ich habe bereits (Um-)Schaltflächen erstellt und es ist mir damit auch gelungen, Spalten auszublenden (über Makro aufzeichnen und der jeweiligen Fläche zuweisen),
Dazu gibt es einen winzigen programmiertechnischen Kniff, mit dem der aktuelle Zustand einfach "umgedreht" wird:
Code: Alles auswählen
currentColumn.isVisible = not currentColumn.isVisible
Lösungen zu Visual Basic können auch nur in Grenzen helfen, da Visual Basic ein Microsoft-Produkt ist und die OO-Programme nichts mit MS zu tun haben, sondern mit einem anderen Basic-Dialekt (immer noch StarBasic genannt) arbeiten.Rav hat geschrieben:da ich von Visual Basic aber recht wenig verstehe und häufig den Wald vor lauter Bäumen nicht sehe, ist es einfach schwierig für mich sowas umzusetzen.
Viel Erfolg! Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
Re: Spalten ausblenden/einblenden mit einem Button
Hallo,
ein kleiner Tip dazu:
Dabei ist
Gruß R
ein kleiner Tip dazu:
Wenn du in den allgemeinen Eigenschaften der Schaltfäche Umschalten ... Ja einstellst, kannst Du mit diesem Makro weiterkommen. Hänge es an das Ereignis Status geändert.Rav hat geschrieben:weil ich nicht weiß wie man eine Wenn Funktion (?) einbaut und mit welchem Befehl man abfragen kann, in welcher Stellung sich der Button befindet.
Code: Alles auswählen
Sub S_Show_State(event)
ocmd = event.source.model
if ocmd.state = 1 then
ocmd.label = "gedrückt"
else
ocmd.label = "nicht gedrückt"
endif
End Sub
- das Ereignis (Status der Schaltfläche geändert)
Code: Alles auswählen
event
- das Model der Schaltfläche
Code: Alles auswählen
event.source.model
- der aktuelle Status der Schaltfläche, 0 für nicht gedrückt, 1 für gedrückt
Code: Alles auswählen
ocmd.state
- die Beschriftung der Schaltfläche
Code: Alles auswählen
ocmd.label
Gruß R
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Spalten ausblenden/einblenden mit einem Button
Hallo und danke für eure Hilfe,
ich habe weiterhin versucht eine Lösung zu finden und eure Tipps umzusetzen, von einem funktionierenden Makro bin ich aber erwartungsgemäß noch sehr weit entfernt. Im Moment sieht es so aus:
Ich habe jetzt versucht, diese Wenn Funktion mit dem Befehl zum ausblenden der Spalten zu kombinieren, das habe ich einer Schaltfläche zugewiesen, Umschalten Ja eingestellt und wie beschrieben "Status geändert" zugewiesen.
Die Meldung, die ich bekomme lautet: "Objectvariable nicht belegt", wobei sich das wohl auf das "event.source.model" bezieht.
Was genau muss ich tun, um diese Variable zu belegen, bzw. muss ich einen zusätzlichen Begriff angeben, um ihm klar zu machen, dass es sich um eine Schaltfläche mit Umschaltfunktion handelt (das ist ja wahrscheinlich mit Modell gemeint)?
Entschuldigt bitte, wenn die Frage recht unbedarft daherkommt, aber ich bin wie gesagt ein Laie und habe noch nie irgendwas programmiert.
ich habe weiterhin versucht eine Lösung zu finden und eure Tipps umzusetzen, von einem funktionierenden Makro bin ich aber erwartungsgemäß noch sehr weit entfernt. Im Moment sieht es so aus:
Code: Alles auswählen
Sub Sorte_umschalten
oSheet = thisComponent.sheets(1)
oSpalte1 = oSheet.getColumns().getByName("G")
ocmd = event.source.model
if ocmd.state = 1 then
ocmd.label = "gedrückt"
oSpalte1.isVisible = false
else
ocmd.label = "nicht gedrückt"
oSpalte1.isVisible = true
endif
End Sub
Die Meldung, die ich bekomme lautet: "Objectvariable nicht belegt", wobei sich das wohl auf das "event.source.model" bezieht.
Was genau muss ich tun, um diese Variable zu belegen, bzw. muss ich einen zusätzlichen Begriff angeben, um ihm klar zu machen, dass es sich um eine Schaltfläche mit Umschaltfunktion handelt (das ist ja wahrscheinlich mit Modell gemeint)?
Entschuldigt bitte, wenn die Frage recht unbedarft daherkommt, aber ich bin wie gesagt ein Laie und habe noch nie irgendwas programmiert.
Re: Spalten ausblenden/einblenden mit einem Button
Sieht doch schon gut aus,
ändere mal
in
Gruß R
ändere mal
Code: Alles auswählen
Sub Sorte_umschalten
oSheet = thisComponent.sheets(1)'Zeigt auf Tabelle2
Code: Alles auswählen
Sub Sorte_umschalten (event)
oSheet = thisComponent.sheets.getbyname("Tabelle1")
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Spalten ausblenden/einblenden mit einem Button
Prima, jetzt funktioniert alles einwandfrei.
Danke euch beiden...

Danke euch beiden...
Re: Spalten ausblenden/einblenden mit einem Button
Hallo
Du kannst auch über das 'Columns'-objekt eines Zellbereichs arbeiten
(Der Zellbereich muss dann lediglich die gewünschten Spalten enthalten)
Reicht das Beispiel?
Karolus
Du kannst auch über das 'Columns'-objekt eines Zellbereichs arbeiten
(Der Zellbereich muss dann lediglich die gewünschten Spalten enthalten)
Code: Alles auswählen
Sub Sorte_umschalten ()
oSheet = thisComponent.sheets.getbyname("Tabelle1")
range = oSheet.getCellRangebyPosition(0,0,1,0)
columns = range.getColumns()
columns.isVisible = Not (columns.isVisible)
end sub
Karolus
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: Spalten ausblenden/einblenden mit einem Button
Hi,
ich habe alternativ eine Variante, in der der Index der Spalten (A=0, B=1 ...) in ein Array geschieben wird, dann kann man frei wählen:
Gruß R
ich habe alternativ eine Variante, in der der Index der Spalten (A=0, B=1 ...) in ein Array geschieben wird, dann kann man frei wählen:
Code: Alles auswählen
Sub Sorte_umschalten (event)
dim arows
arows() = array(0,1,3,5) 'entsprechen Spalte A,B,D,F
oSheet = thisComponent.sheets.getbyname("Tabelle1")
ocolumns = oSheet.Columns
ocmd = event.source.model
if ocmd.state = 1 then
ocmd.label = "Side By Side"
for i = 0 to ubound(arows)
ocolumns(arows(i)).isVisible = false
next i
else
ocmd.label = "Single Row"
for i = 0 to ubound(arows)
ocolumns(arows(i)).isVisible = true
next i
end if
End Sub
Zuletzt geändert von F3K Total am Sa, 11.05.2013 08:11, insgesamt 1-mal geändert.
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Spalten ausblenden/einblenden mit einem Button
Hallo
@Rik
Dem Basic-interpreter ist das egal, aber den Leser könnte die Bezeichnung 'nRows' für ein Array von Spaltenindexen etwas verwirren.
Karolus
@Rik
Dem Basic-interpreter ist das egal, aber den Leser könnte die Bezeichnung 'nRows' für ein Array von Spaltenindexen etwas verwirren.
Karolus
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: Spalten ausblenden/einblenden mit einem Button
Jo,
hier was Neues, geht auch, wenn der Button nicht auf Umschalten steht, und Fokussieren bei Klick ausgeschaltet ist.
Der Status wird alternierend in die Zusatzinformation (.tag) geschrieben.Mit einem zweiten Button blendest Du alle Spalten ein:
Gruß R
PS: Auf die Idee ein zweites Array zu verwenden hättest Du auch selbst kommen können, oder?
hier was Neues, geht auch, wenn der Button nicht auf Umschalten steht, und Fokussieren bei Klick ausgeschaltet ist.
Der Status wird alternierend in die Zusatzinformation (.tag) geschrieben.
Code: Alles auswählen
Sub Sorte_umschalten (event)
dim arows1
dim arows2
arows1() = array(0,1,3,5) 'entsprechen Spalte A,B,D,F
arows2() = array(2,4,6,7) 'entsprechen Spalte C,E,G,H
oSheet = thisComponent.sheets.getbyname("Tabelle1")
ocolumns = oSheet.Columns
ocmd = event.source.model
if ocmd.tag = 1 then
ocmd.label = "zu A,B,D,F wechseln"
ocmd.tag = 0
for i = 0 to ubound(arows1)
ocolumns(arows1(i)).isVisible = false
next i
for i = 0 to ubound(arows2)
ocolumns(arows2(i)).isVisible = true
next i
else
ocmd.label = " zu C,E,G,H wechseln"
ocmd.tag = 1
for i = 0 to ubound(arows1)
ocolumns(arows1(i)).isVisible = true
next i
for i = 0 to ubound(arows2)
ocolumns(arows2(i)).isVisible = false
next i
end if
End Sub
Code: Alles auswählen
Sub S_alle_einblenden
oSheet = thisComponent.sheets.getbyname("Tabelle1")
ocolumns = oSheet.Columns
ocolumns.IsVisible = true
End Sub
PS: Auf die Idee ein zweites Array zu verwenden hättest Du auch selbst kommen können, oder?
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO