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
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
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...
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
>> 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
> ich hab mal die testdatei angehängt...
lies mal hier - besonders Punkte 12 und 3
http://www.jumper.ch/netikette_crossposting.htm
Gruß
Klaus
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...
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.
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...
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
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.
danke!
Johnny
"Claus Busch" <claus...@nospam.de> schrieb im Newsbeitrag
news:14qjcimriu1w7.1...@40tude.net...
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.