Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

zugeklappte gruppierung erkennen / VBA

421 views
Skip to first unread message

john...@arcor.de

unread,
Aug 26, 2006, 11:25:23 AM8/26/06
to
hallo jungs,

ich habe in meinem sheet mehrere bereiche gruppiert...(sagen wir mal 10
bereiche)

angenommen von den 10 sind aber nur 2 aufgeklappt, der rest ist zugeklappt
und somit nicht sichtbar.

wir kann ich per VBA-Funktion nun diese zugeklppten gruppierungen
löschen....also die kompletten zeilen aus dem sheet löschen....

danke schonmal, johnny


Eike Bimczok

unread,
Aug 26, 2006, 2:31:07 PM8/26/06
to
john...@arcor.de schrieb:
Hallo Johnny,

den Inhalt von Zellen kannst du so löschen:

'===========================================
Sub delteNonVisible()
'08-2006
'E.Bimczok
Dim a As Range

For Each a In ActiveSheet.UsedRange
If Intersect(a, _
ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible)) _
Is Nothing Then
a.Clear
'a.EntireRow.Delete
End If
Next a

End Sub
'===========================================

Oder ganze Zeilen löschen indem du das Kommentarzeichen (') bei
a.EntireRow.Delete entfernst.


Gruß
Eike

john...@arcor.de

unread,
Aug 27, 2006, 4:30:11 AM8/27/06
to
hi,
danke schonmal - leider ist das noch nicht GANZ was ich wollte....

hab das mal getestet und er löscht auch was, leider aber nicht alles, so daß
auch die gruppierungszeichen (+/-) verschwinden...
es soll so aussehen, als wäre nie eine gruppierung da gewesen...

händisch kann man das ja so machen:
man markiert die zeile, in der das + daneben steht und die zeile darüber -
löscht diese beiden zeilen und alles ist weg...

kann man das noch optimieren?

danke, johnny

"Eike Bimczok" <eiken...@gmx.de> schrieb im Newsbeitrag
news:euB$%231TyG...@TK2MSFTNGP02.phx.gbl...

Eike Bimczok

unread,
Aug 27, 2006, 7:49:40 AM8/27/06
to
john...@arcor.de schrieb:
Hallo Johnny,

der VBA-Code funktioniert bei mir nach der beschriebenen Modifikation
genau so wie du es dir vorstellst.

'==================================================


Sub delteNonVisible()
'08-2006
'E.Bimczok
Dim a As Range

For Each a In ActiveSheet.UsedRange
If Intersect(a, _
ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible)) _
Is Nothing Then

a.EntireRow.Delete
End If
Next a

End Sub
'==================================================


Allerdings ist das nicht spezifisch für Gruppierungen, es gilt ebenso
für andere nicht sichtbare Zellen. Aber wenn du außer der Gruppierung
nichts ausgeblendet hast, sollte das kein Problem sein.

Gruß
Eike

Claus Busch

unread,
Aug 27, 2006, 8:25:13 AM8/27/06
to
Hallo Johnny,

>> der VBA-Code funktioniert bei mir nach der beschriebenen Modifikation
>> genau so wie du es dir vorstellst.
>>
>> '==================================================
>> Sub delteNonVisible()
>> '08-2006
>> 'E.Bimczok
>> Dim a As Range
>>
>> For Each a In ActiveSheet.UsedRange
>> If Intersect(a, _
>> ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible)) _
>> Is Nothing Then
>> a.EntireRow.Delete
>> End If
>> Next a
>>
>> End Sub
>> '==================================================
>>
>>
>> Allerdings ist das nicht spezifisch für Gruppierungen, es gilt ebenso
>> für andere nicht sichtbare Zellen. Aber wenn du außer der Gruppierung
>> nichts ausgeblendet hast, sollte das kein Problem sein.

füge unter next a ein:
ActiveSheet.UsedRange.ClearOutline


--
Mit freundlichen Grüssen
Claus Busch

Win XP Prof SP2; Office 2000 SP3
claus_busch(at)t-online.de

Klaus "Perry" Pago

unread,
Aug 27, 2006, 8:26:40 AM8/27/06
to
Hallo Johnny,
<john...@arcor.de> schrieb im Newsbeitrag
news:uHEdUDdy...@TK2MSFTNGP05.phx.gbl...

> ich hab mal die testdatei angehängt...

lies mal hier - besonders Punkte 12 und 3

http://www.jumper.ch/netikette_crossposting.htm

Gruß
Klaus


john...@arcor.de

unread,
Aug 27, 2006, 8:54:43 AM8/27/06
to
ok, danke das hilft mir schonmal weiter....
nur noch ein schönheitsfehler....

wenn ich jetzt die gruppierung in der mitte (also die 2te) lösche bleibt ein
großer freiraus zwischen 1 und 3...

kann man die zeilen nicht komplett löschen, so daß 1 und 3 näher
zusammenstehen...

danke


"Claus Busch" <claus...@nospam.de> schrieb im Newsbeitrag
news:1alp8s23avw4f.1fia4q6m7b4cw$.dlg@40tude.net...

Claus Busch

unread,
Aug 27, 2006, 9:28:42 AM8/27/06
to
Hallo Johnny,

Am Sun, 27 Aug 2006 14:54:43 +0200 schrieb john...@arcor.de:

> ok, danke das hilft mir schonmal weiter....
> nur noch ein schönheitsfehler....
>
> wenn ich jetzt die gruppierung in der mitte (also die 2te) lösche bleibt ein
> großer freiraus zwischen 1 und 3...
>
> kann man die zeilen nicht komplett löschen, so daß 1 und 3 näher
> zusammenstehen...

mit a.EntireRow.Delete werden doch die kompletten Zeilen gelöscht und der
Zwischenraum müsste kleiner werden. Mit a.EntireRow.Clear löschst du nur
die Inhalte und die Zeilen bleiben bestehen.

john...@arcor.de

unread,
Aug 27, 2006, 1:06:17 PM8/27/06
to
hallo claus,
sorry, hatte die falsche zeile auskommentiert...
aber trotzdem ist die sache noch etwas buggy.....

in meiner testdatei stehen in zeile 13 bis 18 werte die ja gruppiert sind..
wenn ich diese gruppierung zuklappe (alle anderen sind auf), und die
funktion starte, werden ein teil der zeilen gelöscht und die gruppierungen
aufgehoben - allerdings bleiben 2 zeilen unangetastet.

es wird also nicht die komplette gruppierung gelöscht...

ich weiß, ich kann nerven:-(
trotzdem, danke


"Claus Busch" <claus...@nospam.de> schrieb im Newsbeitrag

news:1mfanfywsbtgv.ub9mej1bemdy$.dlg@40tude.net...

Claus Busch

unread,
Aug 27, 2006, 4:09:16 PM8/27/06
to
Hallo Johnny,

Am Sun, 27 Aug 2006 19:06:17 +0200 schrieb john...@arcor.de:

> hallo claus,
> sorry, hatte die falsche zeile auskommentiert...
> aber trotzdem ist die sache noch etwas buggy.....
>
> in meiner testdatei stehen in zeile 13 bis 18 werte die ja gruppiert sind..
> wenn ich diese gruppierung zuklappe (alle anderen sind auf), und die
> funktion starte, werden ein teil der zeilen gelöscht und die gruppierungen
> aufgehoben - allerdings bleiben 2 zeilen unangetastet.
>
> es wird also nicht die komplette gruppierung gelöscht...

dann probiere es mal so:
Sub deleteNonVisible1()

Dim LRow As Long
Dim i As Long

LRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
For i = LRow To 1 Step -1
If Rows(i).Hidden = True Then
Rows(i).Delete
End If
Next
ActiveSheet.UsedRange.ClearOutline
End Sub

Claus Busch

unread,
Aug 27, 2006, 6:12:03 PM8/27/06
to
Hallo Johnny,

Am Sun, 27 Aug 2006 22:09:16 +0200 schrieb Claus Busch:

ActiveSheet.UsedRange.ClearOutline kannst du weglassen. Wenn die Zeilen in
der Gruppierung alle gelöscht sind, ist die Gruppierung auch weg.

john...@arcor.de

unread,
Aug 28, 2006, 12:29:35 PM8/28/06
to
hallo claus,
das sieht schon mal sehr gut aus....
werde das morgen mal in meiner richtigen datei testen....

danke!
Johnny

"Claus Busch" <claus...@nospam.de> schrieb im Newsbeitrag

news:14qjcimriu1w7.1...@40tude.net...

Claus Busch

unread,
Aug 28, 2006, 12:48:13 PM8/28/06
to
Hallo Johnny,

Am Mon, 28 Aug 2006 18:29:35 +0200 schrieb john...@arcor.de:

> hallo claus,
> das sieht schon mal sehr gut aus....
> werde das morgen mal in meiner richtigen datei testen....

keine Ursache. Freut mich, wenn ich helfen konnte. Wenn Zeilen von unten
nach oben und Spalten von rechts nach links gelöscht werden, dürfte es
keine Schwierigkeiten geben.

0 new messages