Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1240to1244
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

geht das auch eleganter ?

geht das auch eleganter ?
Johannes
Hallo Zusammen,
ich habe versucht bestimmte Spalten über die Funktion "Gruppierung" für die Eingaben aufzuklappen bzw. zu schließen. Eine Beispieldatei habe ich hochgeladen:
https://www.herber.de/bbs/user/77784.xls
Frage: da ich die Funktion "Gruppierung" so nicht ansprechen konnte, habe ich das mit "Spalten ausblenden" bzw "einblenden" gemacht - ich denke aber das das auch elagenter geht. Allerdings fehlen mir hierz die Kenntnisse.
In der Beispieldatei sind in Spalte "X" Hinweise, die nur als Infomation in der Entwicklungsdatei sind, Später soll die Funktion auf- zuklappen in weiteren Coede eingebunden werden.
Wenn jemand eine Idee zur Verbesserung hat, freue ich mich über Eure Hilfe.
Viele Grüße
Johannes

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: geht das auch eleganter ?
02.12.2011 13:25:20
Mister-B
Hallo,
man kann die einzelne Gruppen doch ansprechen. Auf- und zuklappen geht mit:
Range("E1").Columns.ShowDetail = True bzw.
Range("E1").Columns.ShowDetail = False
Vielleicht hilft dir das etwas.
Gruß
Martin
AW: geht das auch eleganter ?
02.12.2011 13:48:31
Johannes
Hallo Martin,
ich habe Deinen Vorschlag wie folgt eingebaut:
Sub Daten_neu()
If Range("W3") = 1 Then
'alle Gruppierungen schließen
Range("X4:X9").Value = ""
Range("X4").Value = "Gruppen zu"
Range("E1").Columns.ShowDetail = False
Range("I1").Columns.ShowDetail = False
Range("M1").Columns.ShowDetail = False
Range("Q1").Columns.ShowDetail = False
Range("U1").Columns.ShowDetail = False
Range("W2").Select
ElseIf Range("W3") = 2 Then
'Gruppierung 1 aufklappen
Range("X4:X9").Value = ""
Range("X5").Value = "Gruppe 1 auf"
Range("E1").Columns.ShowDetail = True
Range("I1").Columns.ShowDetail = False
Range("M1").Columns.ShowDetail = False
Range("Q1").Columns.ShowDetail = False
Range("U1").Columns.ShowDetail = False
Range("W2").Select
ElseIf Range("W3") = 3 Then
'Gruppierung 2 aufklappen
Range("X4:X9").Value = ""
Range("X6").Value = "Gruppe 2 auf"
Range("E1").Columns.ShowDetail = False
Range("I1").Columns.ShowDetail = True
Range("M1").Columns.ShowDetail = False
Range("Q1").Columns.ShowDetail = False
Range("U1").Columns.ShowDetail = False
Range("W2").Select
(ist nur ein Auszug ...)
damit geht die eine Gruppe zwar auf, aber die anderen müssen geschlossen werden. Sind diese aber schon geschlossen kommt eine Fehlermeldung.
Gruß
Johannes
Anzeige
Alle Gruppierungsebenen schließen
02.12.2011 14:21:39
NoNet
Hallo Johannes,
das Schließen der Gruppierungsebenen kannst Du einfacher lösen :
ActiveSheet.Outline.ShowLevels ColumnLevels:=1
Im Klartext (auf Deine Beispielmappe bezogen) :
Sub Daten_holen()
Select Case Range("W3")
Case 1 'Alle Zu
Range("X4").Value = "Gruppen zu"
Range("X5:X9").Value = ""
Case 2 To 6 'Falls Wert zw. 2 bis 6 :
'alle Gruppierungen schließen
ActiveSheet.Outline.ShowLevels ColumnLevels:=1
Range("X4:X9").Value = ""
Range("X4").Offset([W3].Value - 1).Value = "Gruppe " & [W3].Value - 1 & " auf"
Range("E1").Offset(0, ([W3].Value - 2) * 4).Columns.ShowDetail = True
Range("W2").Select
End Select
End Sub
Mehr als diesen Code benötigst Du nicht !
Gruß, NoNet
Anzeige
Mea culpa : Du benötigst doch 1 Zeile mehr
02.12.2011 14:24:51
NoNet
sorry Johannes,
ich hatte in meinem Code eben "vergessen", die Gruppierungsebenen auch zu schließen wenn "alle zu" ausgewählt wurde - hier der angepasste Code :
Sub Daten_holen()
Select Case Range("W3")
Case 1 'Alle Zu
       'alle Gruppierungen schließen
ActiveSheet.Outline.ShowLevels ColumnLevels:=1
Range("X4").Value = "Gruppen zu"
Range("X5:X9").Value = ""
Case 2 To 6 'Falls Wert zw. 2 bis 6 :
'alle Gruppierungen schließen
ActiveSheet.Outline.ShowLevels ColumnLevels:=1
Range("X4:X9").Value = ""
Range("X4").Offset([W3].Value - 1).Value = "Gruppe " & [W3].Value - 1 & " auf"
Range("E1").Offset(0, ([W3].Value - 2) * 4).Columns.ShowDetail = True
Range("W2").Select
End Select
End Sub
Gruß, NoNet
Anzeige
etwas eleganter ?
02.12.2011 13:51:24
Rudi
Hallo,
befriedigt mich nicht wirklich.
Sub daten_holen()
Dim i As Integer, strColumns As String, arrColumns
Range("X4:X9") = ""
On Error Resume Next
For i = 2 To Cells(1, Columns.Count).End(xlToLeft).Column
Err.Clear
Columns(i).ShowDetail = False
If Err  0 And Columns(i - 1).OutlineLevel > 1 Then
strColumns = strColumns & i & ";"
End If
Next
On Error GoTo 0
strColumns = Left(strColumns, Len(strColumns) - 1)
arrColumns = Split(strColumns, ";")
i = Range("W3")
Select Case i
Case 1
Range("X" & i + 3) = "alle zu"
Case Else
ActiveSheet.Columns(arrColumns(i - 2) * 1).ShowDetail = True
Range("X" & i + 3) = "Gruppe " & i - 1 & " auf"
End Select
End Sub

Gruß
Rudi
Anzeige
AW: etwas eleganter ?
02.12.2011 14:42:58
Johannes
Hallo Rudi,
das sieht deutlich eleganter aus, aber mein Hintergedanke war es Zeilen zu sparen - und das schein wohl doch nicht zu gehen.
Macht nichts - aber wenn Du gerade online bist: Du hattes mir mal bei *.csv Dateien geholfen. Ich war bis eben der Annahme Deinen Ansatz verstanden zu haben - ist aber nicht so. Da es aber ein anderes Problem ist mache ich einen neuen Therad auf.
Wenn Du mir hier helfen könntest wäre das toll.
Gruß Johannes
Zeilen sparen
02.12.2011 21:16:23
Rudi
Hallo,
was meinst du? Der Code ist doch deutlich kürzer als deiner.
Gruß
Rudi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige