BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Bestimmte Spalten aus-/einblenden

Alles zur Programmierung im LibreOffice.
Antworten
milmac
Beiträge: 7
Registriert: Mi 7. Aug 2019, 15:30

Bestimmte Spalten aus-/einblenden

Beitrag von milmac » Mi 7. Aug 2019, 15:46

Hallo communitie
Hab hier
viewtopic.php?t=16741
das Makro gefunden, das Spalten aus- und wieder einblenden kann. Da ich zwei Bereiche mit 5 Spaltenpaaren ahb, hab ichs angepasst, und es funktioniert:

Code: Alles auswählen

 Sub spalte_umschalten_Kurs21 ()
dim oSheet   as object
oSheet = thisComponent.sheets.getByName("Zählen")
oSpalte21MO = oSheet.getColumns().getByName("K")
oSpalte21DI = oSheet.getColumns().getByName("R")
oSpalte21MI = oSheet.getColumns().getByName("Y")
oSpalte21DO = oSheet.getColumns().getByName("AF")
oSpalte21FR = oSheet.getColumns().getByName("AM")
oSpalte21MO2 = oSheet.getColumns().getByName("L")
oSpalte21DI2 = oSheet.getColumns().getByName("S")
oSpalte21MI2 = oSheet.getColumns().getByName("Z")
oSpalte21DO2 = oSheet.getColumns().getByName("AG")
oSpalte21FR2 = oSheet.getColumns().getByName("AN")
        If oSpalte21MO.isVisible = False Then
       		oSpalte21MO.isVisible = True  
          Else
             oSpalte21MO.isVisible = False
          End If
        If oSpalte21DI.isVisible = False Then
       		oSpalte21DI.isVisible = True  
          Else
             oSpalte21DI.isVisible = False
          End If
        If oSpalte21MI.isVisible = False Then
       		oSpalte21MI.isVisible = True  
          Else
             oSpalte21MI.isVisible = False
          End If
        If oSpalte21DO.isVisible = False Then
       		oSpalte21DO.isVisible = True  
          Else
             oSpalte21DO.isVisible = False
          End If
        If oSpalte21FR.isVisible = False Then
       		oSpalte21FR.isVisible = True  
          Else
             oSpalte21FR.isVisible = False
          End If 
If oSpalte21MO2.isVisible = False Then
       		oSpalte21MO2.isVisible = True  
          Else
             oSpalte21MO2.isVisible = False
          End If
        If oSpalte21DI2.isVisible = False Then
       		oSpalte21DI2.isVisible = True  
          Else
             oSpalte21DI2.isVisible = False
          End If
        If oSpalte21MI2.isVisible = False Then
       		oSpalte21MI2.isVisible = True  
          Else
             oSpalte21MI2.isVisible = False
          End If
        If oSpalte21DO2.isVisible = False Then
       		oSpalte21DO2.isVisible = True  
          Else
             oSpalte21DO2.isVisible = False
          End If
        If oSpalte21FR2.isVisible = False Then
       		oSpalte21FR2.isVisible = True  
          Else
             oSpalte21FR2.isVisible = False
          End If                
End Sub


Sub spalte_umschalten_Kurs22 ()
dim oSheet   as object
oSheet = thisComponent.sheets.getByName("Zählen")
oSpalte22MO = oSheet.getColumns().getByName("H")
oSpalte22DI = oSheet.getColumns().getByName("O")
oSpalte22MI = oSheet.getColumns().getByName("V")
oSpalte22DO = oSheet.getColumns().getByName("AC")
oSpalte22FR = oSheet.getColumns().getByName("AJ")
oSpalte22MO2 = oSheet.getColumns().getByName("I")
oSpalte22DI2 = oSheet.getColumns().getByName("P")
oSpalte22MI2 = oSheet.getColumns().getByName("W")
oSpalte22DO2 = oSheet.getColumns().getByName("AD")
oSpalte22FR2 = oSheet.getColumns().getByName("AK")
        If oSpalte22MO.isVisible = False Then
       		oSpalte22MO.isVisible = True  
          Else
             oSpalte22MO.isVisible = False
          End If
        If oSpalte22DI.isVisible = False Then
       		oSpalte22DI.isVisible = True  
          Else
             oSpalte22DI.isVisible = False
          End If
        If oSpalte22MI.isVisible = False Then
       		oSpalte22MI.isVisible = True  
          Else
             oSpalte22MI.isVisible = False
          End If
        If oSpalte22DO.isVisible = False Then
       		oSpalte22DO.isVisible = True  
          Else
             oSpalte22DO.isVisible = False
          End If
        If oSpalte22FR.isVisible = False Then
       		oSpalte22FR.isVisible = True  
          Else
             oSpalte22FR.isVisible = False
          End If 
 If oSpalte22MO2.isVisible = False Then
       		oSpalte22MO2.isVisible = True  
          Else
             oSpalte22MO2.isVisible = False
          End If
        If oSpalte22DI2.isVisible = False Then
       		oSpalte22DI2.isVisible = True  
          Else
             oSpalte22DI2.isVisible = False
          End If
        If oSpalte22MI2.isVisible = False Then
       		oSpalte22MI2.isVisible = True  
          Else
             oSpalte22MI2.isVisible = False
          End If
        If oSpalte22DO2.isVisible = False Then
       		oSpalte22DO2.isVisible = True  
          Else
             oSpalte22DO2.isVisible = False
          End If
        If oSpalte22FR2.isVisible = False Then
       		oSpalte22FR2.isVisible = True  
          Else
             oSpalte22FR2.isVisible = False
          End If                       
End Sub
Das lässt sich sicher etwas kürzer schreiben, hat aber vor allem den Nachteil, dass es sich statisch auf die Spalten bezieht.
Gibt's auch einen Weg, sich auf Spalten via Benennung im Spaltenkopf oder ähnlich zu beziehen, sodass sich durch das Einfügen oder Löschen davorbzwzwischengelagerter Spalten die angesprochenen Spalten nicht verschieben?
Danke Milan

aladin
Beiträge: 37
Registriert: Di 30. Jul 2019, 15:49
Kontaktdaten:

Re: Bestimmte Spalten aus-/einblenden

Beitrag von aladin » Mi 7. Aug 2019, 16:02

Hallo Milan,

ich habe mal etwas gemacht um in Abhängigkeit vom Zelleninhalt Zeilen auszublenden.
Vielleicht kannst Du Dir davon etwas abschauen...

Code: Alles auswählen

Sub Ausblenden()
	Dim oSheet as Object
	Dim sSummenSpalte as String
	Dim sLetzte_Zeile as String
	Dim iCount as Integer
	
	iCount = 5
	
	oSheet = thisComponent.sheets(0)
	sSummenSpalte=oSheet.getCellByPosition(1,0).String
	sLetzte_Zeile=oSheet.getCellByPosition(2,0).String

	GlobalScope.BasicLibraries.LoadLibrary("Tools")
	
'	exit Sub

	Do While iCount < CInt(sLetzte_Zeile)
'		print oSheet.getCellRangeByName("$"& sSummenSpalte &"$"& iCount).String

		if oSheet.getCellRangeByName("$"& sSummenSpalte &"$"& iCount+1).Value>0 _
			or oSheet.getCellRangeByName("$"& sSummenSpalte &"$"& iCount+1).String="K" _
		then
			oSheet.getRows().getByIndex(iCount).isVisible = true
		else
			oSheet.getRows().getByIndex(iCount).isVisible = false
		end if
		
		iCount=iCount+1
	Loop
End Sub
Gruß
Heiko

milmac
Beiträge: 7
Registriert: Mi 7. Aug 2019, 15:30

Re: Bestimmte Spalten aus-/einblenden

Beitrag von milmac » Mi 7. Aug 2019, 18:48

Hallo Heiko

Danke! Muss allerdings zugeben, dass ich die Wirkungsweise des Makros nicht ganz durchschaue.
Schaut es nach Werten größer Null

Code: Alles auswählen

Value>0 
bzw = K?

Code: Alles auswählen

String="K"
Was bewirken diese hier

Code: Alles auswählen

sSummenSpalte=oSheet.getCellByPosition(1,0).String
	sLetzte_Zeile=oSheet.getCellByPosition(2,0).String
?

Danke für Hinweise &
Gruß!
Milan

aladin
Beiträge: 37
Registriert: Di 30. Jul 2019, 15:49
Kontaktdaten:

Re: Bestimmte Spalten aus-/einblenden

Beitrag von aladin » Mi 7. Aug 2019, 19:33

milmac hat geschrieben:
Mi 7. Aug 2019, 18:48
Danke! Muss allerdings zugeben, dass ich die Wirkungsweise des Makros nicht ganz durchschaue.
Schaut es nach Werten größer Null

Code: Alles auswählen

Value>0 
bzw = K?

Code: Alles auswählen

String="K"
Du hast das richtig erkannt.
Zeilen mit dem Feldinhalt >0 oder "K" sollen NICHT ausgeblendet werden.
Alles andere wird ausgeblendet.
Was bewirken diese hier

Code: Alles auswählen

sSummenSpalte=oSheet.getCellByPosition(1,0).String
sLetzte_Zeile=oSheet.getCellByPosition(2,0).String
In der Calc-Tabelle steht in der 1. Zelle die Spalte und in der 2. Zelle die Anzahl der Zeilen, auf die diese Bedingungen angewendet werden sollen.

milmac
Beiträge: 7
Registriert: Mi 7. Aug 2019, 15:30

Re: Bestimmte Spalten aus-/einblenden

Beitrag von milmac » Do 19. Sep 2019, 13:14

@Heiko
Danke! Tut mir leid, dass ich mich erst jetzt wieder melde, hab die Frage kurz vor dem Urlaub gestellt und komme erst jetzt wieder dazu, mich drum zu kümmern.
Für meinen Zweck soll die Umschaltung inhaltsunabhängig sein, allerdings mit festem Bezug auf die angesprochenen Spalten. (Es geht um einen Stundenplan für zwei parallele Kurse, deren Planung so wechselweise alleine oder auch parallel zu betrachten ist).
Also unabhängig von nachträglich eingefügten oder gelöschten Spalten, die ja dann die Referenzen verschieben. Geht das vielleicht über Benennung der Spalte als Bereich?

Ansonsten wäre es ja möglich, eindeutige Bezeichnungen in den zB Zeile eins zu schreiben und mit deinem Makro ein- und auszuschalten, die dürften dann aber nicht verpfuscht werden...

Grüße
Milan

craig
Beiträge: 1137
Registriert: Do 21. Apr 2016, 11:42

Re: Bestimmte Spalten aus-/einblenden

Beitrag von craig » Do 19. Sep 2019, 18:33

Hallo milmac,

statt einer Makrolösung, schlage ich folgende bereits eingebaute Funktion vor:
Calc Gruppierung und Gliederung
Gruß

Craig

Nie die Sicherungskopie vergessen!

════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8

milmac
Beiträge: 7
Registriert: Mi 7. Aug 2019, 15:30

Re: Bestimmte Spalten aus-/einblenden

Beitrag von milmac » Fr 20. Sep 2019, 12:54

@Craig
Danke für den Hinweis, das ist für außeinanderliegende Spalten leider nicht so praktisch.
Hab's jetzt weiterhin mit obenstehendem Makro in 4 Versionen mit entsprechenden Buttons gelöst, am Spaltenlayout darf jetzt halt nichts mehr geändert werden...
Hätte auch gerne Heikos Lösung probiert, hatte aber fürs ausprobieren wie ich das Makro auf Spalten anstatt Zeilen anwenden kann zu wenig Zeit. Vielleicht probiere ich's mam noch, auf jeden Fall Danke für die Vorschläge!
Milan

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten