Excel VBA Daten Gruppieren

Hallo Experten,

Ich habe eine ewig lange Liste von Daten und würde die gerne gruppieren.
Nach Makro aufzeichnung bin ich auf folgendes gekommen:

wksAktuell.Range(Cells(headerCount + 1, 1), Cells(headerCount + maxcount,1)).Rows .Group

wksAktuell ist ein workshhet, headerCount und maxcount sind (positive) Integers

Leider funktioniert das nicht.

Was muss ich machen, damit ich meine Daten über das Makro gruppien kann.

Bounsfrage, wie kann ich gruppierte Bereiche über Makro schliessen?

Danke & Grüße
Winter

Hi Winter,

Ich habe eine ewig lange Liste von Daten und würde die gerne
gruppieren.
Nach Makro aufzeichnung bin ich auf folgendes gekommen:

wksAktuell.Range(Cells(headerCount + 1, 1),
Cells(headerCount + maxcount,1)).Rows .Group

wksAktuell ist ein workshhet, headerCount und maxcount sind
(positive) Integers
Leider funktioniert das nicht.

Probiers mal so:

Sub Gruppieren()
ActiveSheet.Range(Cells(12 + 1, 1), Cells(12 + 30, 1)).Rows.Group
End Sub

Bounsfrage, wie kann ich gruppierte Bereiche über Makro
schliessen?

Sub Gruppierungschliessen()
ActiveSheet.Outline.ShowLevels RowLevels:=1, ColumnLevels:=1
End Sub

Gruß
Reinhard

Hi Winter,

Probiers mal so:

Sub Gruppieren()
ActiveSheet.Range(Cells(12 + 1, 1), Cells(12 + 30,
1)).Rows.Group
End Sub

Bounsfrage, wie kann ich gruppierte Bereiche über Makro
schliessen?

Sub Gruppierungschliessen()
ActiveSheet.Outline.ShowLevels RowLevels:=1, ColumnLevels:=1
End Sub

Gruß
Reinhard

Hallo Reinhard,
Danke für Deine Antwort.
Sach mal bin ich zu doof oder sehe ich keinen Unterschiede ausser, dass Du ActiveSheet, anstelle von meinen Worksheet?
Ich brauche allerdings das Workshhet als Variable, da ich in mehreren Sheet arbeite und aus Geschwindigkeitsgrüden und für meine Augen (Flackern) die sheets per variable anspreche.

Danke für Deine Hilfe
Winter

Sub Gruppieren()
ActiveSheet.Range(Cells(12 + 1, 1), Cells(12 + 30,
1)).Rows.Group
End Sub

Bounsfrage, wie kann ich gruppierte Bereiche über Makro
schliessen?

Sub Gruppierungschliessen()
ActiveSheet.Outline.ShowLevels RowLevels:=1, ColumnLevels:=1
End Sub

Gruß
Reinhard

Hallo Reinhard,
Danke für Deine Antwort.
Sach mal bin ich zu doof oder sehe ich keinen Unterschiede
ausser, dass Du ActiveSheet, anstelle von meinen Worksheet?

Hallo Winter,
ja schon, aber ich habe im Sinne von enger Gruppierung „.Row.Group“ gewählt, bei dir sah es so aus „.Row. Group“.
Aber da ich ja von hier aus nicht wissen kann ob es nur das ist, habe ich es nicht erwähnt, hätten ja auch deine variableen sein können die irgendwie falsch sind.

Ich brauche allerdings das Workshhet als Variable, da ich in
mehreren Sheet arbeite und aus Geschwindigkeitsgrüden und für
meine Augen (Flackern) die sheets per variable anspreche.

Ja, Augenschonung ist Pflicht, grad nach/mit dem neuen Design hier :smile:

Und zur Geschwindigkeit, wenn die wichtig wird,

With Worksheets(„Tabelle1“)
.Range…
.Range…

ist langsamer als

Set ws=Worksheets(„Tabelle1“)
With ws
.Range…
.Range…

Und,
…Colorindex=xlnone
ist langsamer als
…Colorindex=-4142

Achja, das Gruppenschliessen habe ich vorhin erst im Internet gefischt, bitte dazu keine Nachfragen, muß das erst mal selbst nachher checken und verstehen lernen.
Und auch bewerten ob man damit einzelne Gruppen löschen kann oder nur all und so.

Gruß
Reinhard

Hi Winter,

zum Flackern noch ein Hinweis (falls nicht bekannt :wink:):

Application.ScreenUpdating = False

Dann flackert nix mehr und es geht auch schneller, da der Bildschirmaufbau entfällt.

mfg

Dirk.Pegasus

1 Like

Hi Winter,
zum Flackern noch ein Hinweis (falls nicht bekannt :wink:):
Application.ScreenUpdating = False
Dann flackert nix mehr und es geht auch schneller, da der
Bildschirmaufbau entfällt.
Dirk.Pegasus

Servus Dirk,
danke,
ich wusste das es sowas gibt. ´Kannte aber den Befehl nicht,
woltle schonmal das Archiv danach durchsuchen, aber die Arbeit hast Du mir abgenommen.
Danke
Der einzige NAchteil an der Sache ist, man weiß nicht ob excel wirklich arbeitet :wink:
Grüße Winter

Hallo Winter,
ja schon, aber ich habe im Sinne von enger Gruppierung
„.Row.Group“ gewählt, bei dir sah es so aus „.Row. Group“.
Aber da ich ja von hier aus nicht wissen kann ob es nur das
ist, habe ich es nicht erwähnt, hätten ja auch deine
variableen sein können die irgendwie falsch sind.

Servus Reinhard,
natürlich war es bei mir „.Rows. Group“
Doofmann! habe gestern abend in die WiiFB gebissen, vor Ärger.
aber die

wksAktuell.Range(Cells(headerCount + 1, 1), Cells(headerCount + maxcount, 1)).Rows.Group

funktioniert immer noch nicht.
habe die Variable mir Msgbox gecheckt beide positv.
selbst, wenn ich zahlen eingebe

wksAktuell.Range(Cells(154 + 1, 1), Cells(173, 1)).Rows.Group

kommt die selbe Fehler meldung.

Als fehlermeldung kommt
die Methode Range sit für das Object’_worksheet’ ist fehlgeschlagen

Winter,
der langsam am Ende seines Latein ist
;-(

Der einzige NAchteil an der Sache ist, man weiß nicht ob excel
wirklich arbeitet :wink:

Hallo Winter,

dann bau sowas mit in den Code ein:

Sub Status()
Dim a, b
For a = 1 To 100
Application.StatusBar = „Bearbeite " & Right(„00“ & a, 3) & " / 100“
For b = 1 To 1000000 'nur Zeitschleife zum Verlangsamen
Next b
Next a
Application.StatusBar = „“
End Sub

Gruß
Reinhard