[gelöst] Makro für Zeilen ausblenden

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

Moderator: Moderatoren

Gebirgsmarine
Beiträge: 3
Registriert: Do, 10.04.2014 15:19

[gelöst] Makro für Zeilen ausblenden

Beitrag von Gebirgsmarine »

Hallo liebe Forengemeinde,

schön, dass es Euch gibt...

Das Thema gab es schon des öfteren, wie ich der Suchfunktion entnehmen konnte. Gegockelt habe ich auch schon ausführlich. Trotzdem bin ich als blutiger Anfänger mit dem Thema Makros überfordert und konnte seit heute morgen keine Hilfe anhand der vorgeschlagenen Lösungen finden, da ich sie nicht passend für meinen Fall abändern konnte.

Ich habe eine "Tabelle1" erstellt mit einer Zelle "C22", die eine Auswahlliste mit den Begriffen "Ja" und "Nein" enthält (Zellbereich/Quelle: $Hilfstabelle.$C$1:$C$2). Die Begriffe "Ja" "Nein" wurden in der "Hilfstabelle" hinterlegt. Ich möchte ein Makro einbinden, dass folgendes ausführt:

1.) wird in C22 "Ja" ausgewählt, dann sollen die Zeilen 40-49 ausgeblendet werden

2.) wird in C22 "Nein" ausgewählt, dann sollen die Zellen 40-49 wieder eingeblendet werden

Mein letzter (sicherlich falscher) Versuch war:

Code: Alles auswählen

===================================
REM  *****  BASIC  *****

Sub testtabelle
with thisComponent.sheets().getbyname("Tabelle1")
for zi = 39 to 48 'zeile 40 bis 49
if .cell.value("C22").string = "Nein"  then
.Rows(zi).isvisible = False
else
.Rows(zi).isvisible = True
end if
next
end with
End Sub
=================================
[​code]…[​/code] Tags gesetzt.
lorbass, Moderator


Ich wäre sehr dankbar, wenn mir jemand helfen könnte.

Vielen Dank und Grüße



Moderation:
Thema gvon OOo Calc nach OOo Basic und Java verschoben, wo alle Themen zur Basic-Programmierung hingehören.
lorbass, Moderator
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Makro für Zeilen ausblenden

Beitrag von Karolus »

Hallo

Code: Alles auswählen

Sub testtabelle
with thisComponent.sheets().getbyname("Tabelle1")
    rows = .getCellRangeByPosition(0,39,0,48).Rows
    if .getCellRangeByName("C22").string = "Nein" then
        rows.isvisible = False
    else
        rows.isvisible = True
    end if
end with
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)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Makro für Zeilen ausblenden

Beitrag von clag »

Hallo Gebirgsmarine,

so wie du vorgehst bräuchte man einen Listener der die Zelle C22 permanent auf Veränderung prüft, das halte ich für nicht so günstig.
viel einfacher wäre doch ein Markierfeld welches durch anhaken diese Aktion ausführt
guckst du mal hier
Zeile_an_aus.ods
(10.14 KiB) 187-mal heruntergeladen
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Makro für Zeilen ausblenden

Beitrag von clag »

Hallo Karolus,

bin ja immer auf deine Lösungen gespannt, wie wird dieser Code von dir zum leben erweckt?
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Makro für Zeilen ausblenden

Beitrag von Karolus »

Hallo

Nun - ich hab hab aus der Frage nicht unbedingt "....vollautomatisch...." herausgelesen.

Ansonsten wäre die einfachste Lösung:
Gewünschte Zeilen markieren und →Daten→Gruppierung und Gliederung→Gruppierung
( jetzt ist links von Zeile 40 ein Knopf zum aus- und einblenden )
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Gebirgsmarine
Beiträge: 3
Registriert: Do, 10.04.2014 15:19

Re: Makro für Zeilen ausblenden

Beitrag von Gebirgsmarine »

Hallo Karolus und clag,

ganz herzlichen Dank für die ultraschnellen Antworten.

Ich habe die Auswahlliste in C22 mit Ja und Nein befüllt und diese Entscheidung hat auch Auswirkungen auf die Berechnung in anderen Zellen. Aber ich könnte zur Not natürlich auch nochmal umstellen.

Wäre es möglich, das von clag vorgeschlagene Markierfeld zum Anhaken als Teil einer Rechenoperation zu verwenden?

Aktuell z.B. wenn $C$22="Ja", dann....

Stattdessen wenn "Markierfeld = Haken", dann...

Ginge sowas?

Vielen Dank.
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Makro für Zeilen ausblenden

Beitrag von Karolus »

Hallo

Vollautomatisch auf Änderung der Zelle C22:

→Rechtsklick auf den Tabellenreiter →Tabellenereignisse→→ Inhalt geändert

→→→

Code: Alles auswählen

Sub testtabelle( event )
if event.AbsoluteName <> "$Tabelle1.$C$22" then
    exit sub
end if
rows = event.Spreadsheet.getCellRangeByPosition(0,39,0,48).Rows
if event.string = "Nein" then
    rows.isvisible = False
else
    rows.isvisible = True
end if
End Sub
edit: Nachtrag (kurze Variante)

Code: Alles auswählen

Sub testtabelle( event )

if event.AbsoluteName <> "$Tabelle1.$C$22" then exit sub
rows = event.Spreadsheet.getCellRangeByPosition(0,39,0,48).Rows
rows.isvisible = not cbool(event.String = "Nein")

End Sub
Zuletzt geändert von Karolus am Do, 10.04.2014 18:05, insgesamt 1-mal geändert.
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Gebirgsmarine
Beiträge: 3
Registriert: Do, 10.04.2014 15:19

Re: Makro für Zeilen ausblenden

Beitrag von Gebirgsmarine »

:shock:
Uuuaaaaahhhh, Karolus,

sensationell !!! Es funktioniert wie gewünscht, die Zeilen werden ausgeblendet, je nach Ausdruck im Auswahlfeld.

Ich bewundere Leute mit solchen Fähigkeiten, Fragen von Dummies fachlich exakt zu beantworten. Chapeau...

ganz herzlichen Dank und schönen Feierabend.

@Mod: Thema kann als GELÖST markiert werden.
Benutzeravatar
lorbass
********
Beiträge: 4116
Registriert: Mo, 01.05.2006 21:29
Wohnort: Bonn

Re: [gelöst] Makro für Zeilen ausblenden

Beitrag von lorbass »

Gebirgsmarine hat geschrieben:@Mod: Thema kann als GELÖST markiert werden.
Es ist ja immer wieder gut zu erfahren, dass ein Problem gelöst wurde, eine Frage zufriedenstellen geklärt ist. Danke für deine Info!

Die Kennzeichnung allerdings soll der Fragesteller selbst vornehmen. Dazu wird der erste Beitrag des Themas mit einem Klick auf Ändern zur Bearbeitung geöffnet. Dem Betreff wird dann ein Hinweis wie »[gelöst]« oder »[geschlossen]« vorangestellt und der Vorgang mit einem Klick auf Absenden beendet. Und das war's dann auch schon.

Dieses Thema habe ich für dich markiert. Ich will es mir aber nur höchst ungern zur Gewohnheit werden lassen…

Gruß
lorbass
Antworten