Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1216to1220
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

Gliederung per VBA

Gliederung per VBA
Lorenz
Hallo,
ich versuche mich jetzt schon seit einiger Zeit in meine Tabelle eine Gliederung einzubauen, ohne großen Erfolg.
Genauer gesagt, soll automatisch (per VBA) eine Gliederung von Zelle A2 bis Ende Spalte A erfolgen.
Die "Überschriften" in dieser Gliederung sind in Spalte A mit roter Schrift und Fettdruck. Und genau dran scheitere ich.
Bernd Held gliedert in seinem Buch leider nach dem Kriterium vierstellige Zahl. Ich kriege es nicht auf meine Anforderungn umgeschrieben.
Wer kennt sich damit aus?
Gruß
Lorenz Peters
Sub GruppierungErstellen()
Dim s_Beginn As String
Dim s_Ende As String
Sheets("Tabelle11").Activate
Range("A2").Select
Do Until ActiveCell.Value = ""
ActiveCell.Offset(1, 0).Select
s_Beginn = ActiveCell.Address
Do Until Len(ActiveCell.Value) = 4 Or ActiveCell.Value = ""
ActiveCell.Offset(1, 0).Select
Loop
s_Ende = ActiveCell.Offset(-1, 0).Address
Range(s_Beginn, s_Ende).Rows.Group
Range(s_Ende).Offset(1, 0).Select
Loop
End Sub

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

Betreff
Benutzer
Anzeige
AW: Gliederung per VBA
19.06.2011 15:22:09
Nepumuk
Hallo,
ein Buch vom Helden? Kein Wunder !!! Ich persönlich warne immer wieder davor, aber wer nicht hören will muss fühlen. :-)
Public Sub GruppierungErstellen()
    With Tabelle1
        .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)).EntireRow.Group
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: Gliederung per VBA
19.06.2011 19:08:57
Lorenz
Hallo Nepumuk,
ich versuche es ja zu lernen.
Dein Makro funktioniert aber nicht so ganz, vermutlich liegt es an meiner BEschreibung.
Also ich möchte von Zeile 2 bis Ende gliedern. Und das entsprechende Kriterium sind die Zelleinträge in Spalte A. Die Zellen mit Fettdruck und roter Schrift sollen Überschriften sein.
Beispiel:
A2 Test (Fettdruck rot)
A3 - geliedert
A4 - geliedert
A5 - geliedert
A6 - geliedert
A7 Test (Fettdruck rot)
A8 - geliedert
A9 - geliedert
usw.
Vielen Dank!
Welchen Autor oder Buch schlägst Du vor?
Vieel Grüße
Lorenz Peters
Anzeige
AW: Gliederung per VBA
19.06.2011 19:30:28
Josef

Hallo Lorenz,
so?
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************
Option Explicit
Sub gliederung()
  Dim lngStart As Long, lngRow As Long, lngEnd As Long, lngLast As Long
  lngLast = Cells(Rows.Count, 1).End(xlUp).Row
  For lngRow = 2 To lngLast
    If Cells(lngRow, 1).Font.Bold And Cells(lngRow, 1).Font.ColorIndex = 3 Then
      lngStart = lngRow + 1
      For lngEnd = lngStart To lngLast + 1
        If (Cells(lngEnd, 1).Font.Bold And Cells(lngEnd, 1).Font.ColorIndex = 3) Or lngEnd > lngLast Then
          Range(Cells(lngStart, 1), Cells(lngEnd - 1, 1)).EntireRow.Group
          Exit For
        End If
      Next
    End If
  Next
End Sub



« Gruß Sepp »

Anzeige
AW: Gliederung per VBA
19.06.2011 19:49:55
Lorenz
Hallo Sepp,
ja genau so wollte ich es. Jetzt habe ich nur noch eine Frage.
Über welchen Zusatz kann ich bestimmen, ob alle Details ein- oder ausgeblendet sind (sprich: nur die Überschriften oder Überschriften und Unterpunkte)?
AW: Gliederung per VBA
19.06.2011 20:00:12
Josef

Hallo Lorenz,
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************
Option Explicit
Sub gliederung()
  Dim lngStart As Long, lngRow As Long, lngEnd As Long, lngLast As Long
  lngLast = Cells(Rows.Count, 1).End(xlUp).Row
  ActiveSheet.Rows.ClearOutline
  For lngRow = 2 To lngLast
    If Cells(lngRow, 1).Font.Bold And Cells(lngRow, 1).Font.ColorIndex = 3 Then
      lngStart = lngRow + 1
      For lngEnd = lngStart To lngLast + 1
        If (Cells(lngEnd, 1).Font.Bold And Cells(lngEnd, 1).Font.ColorIndex = 3) Or lngEnd > lngLast Then
          Range(Cells(lngStart, 1), Cells(lngEnd - 1, 1)).EntireRow.Group
          Exit For
        End If
      Next
    End If
  Next
  ActiveSheet.Outline.ShowLevels RowLevels:=1 '1 = Eingeklappt,, 2 = Ausgeklappt!
End Sub



« Gruß Sepp »

Anzeige
AW: Gliederung per VBA
19.06.2011 19:55:33
Nepumuk
Hallo,
achso, ja dann:
Musste allerdings ein bisschen tricksen, den das Suchen nach Formaten per VBA läuft nur von der ersten Übereinstimmung bis zur letzten richtig. Danach findet die Methode alles Mögliche, nur nicht das richtige.
Public Sub GruppierungErstellen()
    
    Dim objStartCell As Range, objEndCell As Range
    Dim strStopAddress As String
    
    With Application.FindFormat.Font
        .FontStyle = "Fett"
        .ColorIndex = 3
    End With
    
    With Tabelle1
        
        Set objStartCell = .Cells.Find(What:="*", After:=.Cells(.Rows.Count, 1), _
            LookIn:=xlFormulas, LookAt:=xlPart, SearchDirection:=xlPrevious, _
            MatchCase:=False, SearchFormat:=True)
        
        If Not objStartCell Is Nothing Then
            
            Set objEndCell = .Cells(.Rows.Count, 1).End(xlUp)
            strStopAddress = objEndCell.Address
            
            Do
                
                .Range(objStartCell.Offset(1), objEndCell).EntireRow.Group
                Set objEndCell = objStartCell.Offset(-1)
                Set objStartCell = .Cells.FindPrevious(After:=objEndCell)
                
            Loop Until strStopAddress = objStartCell.Address
        End If
    End With
    
    Set objEndCell = Nothing
    Set objStartCell = Nothing
    
End Sub

Also Autor kann ich keinen speziell empfehlen, ich hab kein Buch über VBA. Aber ich würde mal sagen, alle anderen außer dem.
Gruß
Nepumuk
Anzeige
Danke Euch beiden für die Hilfe!
19.06.2011 20:22:10
Lorenz

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige