Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Nummerierung erneuern und Zeilen gruppieren!

Forumthread: Nummerierung erneuern und Zeilen gruppieren!

Nummerierung erneuern und Zeilen gruppieren!
Lemmi
Hallo zusammen,
ich möchte eine teilweise vorhandene Gliederung und Nummerierung Updaten/ erneuern!
Dazu habe ich immer die Nummerierungsblöcke "zu Fuß" wieder angepasst sowie die Gruppierungsblöcke erst gelöscht dann wieder neu erstellt!
Kann dies Auch ein Makro erledigen?
siehe Datei: https://www.herber.de/bbs/user/63086.xls
Gruß
Lemmi
Anzeige
AW: Nummerierung erneuern und Zeilen gruppieren!
12.07.2009 12:56:38
Tino
Hallo,
versuche es mal hiermit.
Option Explicit
'Makro für die Nummer 
Sub Nummern(ByVal Bereich As Range)
Dim iCount As Long, A As Long
Dim myAr, myAr2


    myAr = Bereich
    myAr2 = Bereich.Offset(0, 1)
 
 For A = 1 To Ubound(myAr)
  If myAr2(A, 1) = 0 Then iCount = iCount + 1
  myAr(A, 1) = iCount
 Next A

Bereich = myAr

End Sub

Sub Start_Gruppierung()
Dim Bereich As Range, rZeilen As Range

With Application
 .ScreenUpdating = False
 .EnableEvents = False
    
    'hier die Tabelle anpassen 
    With Tabelle1
         'hier eventuell den Bereich anpassen 
         Set Bereich = .Range("A6", .Cells(.Rows.Count, 2).End(xlUp).Offset(0, -1))
          
            Call Nummern(Bereich) 'Nummerierung durchführen 
                
                .Columns(1).ClearOutline
                .Outline.AutomaticStyles = False
                .Outline.SummaryRow = xlAbove
                .Outline.SummaryColumn = xlLeft
            
            For Each Bereich In Bereich
                If rZeilen Is Nothing Then
                 Set rZeilen = Bereich.Offset(1, 0)
                End If
                
                If Bereich.Offset(1, 0) <> Bereich Then
                 Set rZeilen = .Range(rZeilen, Bereich).EntireRow
                 rZeilen.Rows.Group
                 Set rZeilen = Nothing
                End If
            Next Bereich
    End With
 
 .ScreenUpdating = True
 .EnableEvents = True
End With
End Sub

Gruß Tino
Anzeige
AW: Nummerierung erneuern und Zeilen gruppieren!
13.07.2009 21:18:47
Lemmi
Hallo Tino,
ich habe Dein Marko ausprobiert! Es werden alle vorhandene Gliederung und Nummerierung Updaten/ erneuert!
Vielen Dank!
Kannst Du den Code noch etwas anpassen? Ich habe ein Problem erst nach der Implementierung in die Excel Datei gesehen!
Wenn nun in Spalte B die Nummerierung keine Zahl enthält, wertet der Code es so aus als würde diese Zelle eine 0 enthalten!
Kann man eine Leer- Zelle (kein Eintrag) und Eintrag Zahl 0 auswerten?
Konkret heißt das, dass ich annehme, dass es eine "Master" - Zeile gibt die immer manuell geprüft und vollständig ist! Jeder Gliederungsblock erhlält damit eine Kopfzeile (feste und bestehende Größe: 1und 0; 2und 0; 3und 0; usw.).
Die Masterzeile beinhaltet in Splate A die Gliederungs- Nummer also 1 bis XXXX und in Spalte B enthält Sie die Zahl 0.
Ist die Spalte B ohne Inhalt so beginnt -----keine-------- neue Geliederung. Es wird die Spalte B ganz normal durchgezählt. Erst wenn der Zahleneintrag 0 vorhanden ist bedinnt ein neuer Gliederungsblock!
alles andere beleibt!
Siehe Datei:https://www.herber.de/bbs/user/63151.xls
Gruß
Lemmi
Anzeige
AW: Nummerierung erneuern und Zeilen gruppieren!
13.07.2009 22:38:09
Tino
Hallo,
versuche es mal.
kommt als Code in Modul1
Option Explicit 
'Makro für die Nummer 
Sub Nummern(ByVal Bereich As Range) 
Dim iCount As Long, A As Long 
Dim myAr 
Dim LOffset As Long 
 
LOffset = Bereich(1, 1).Row - 2 
 
 myAr = Range(Bereich, Bereich.Offset(0, 1)) 
 
 For A = 1 To Ubound(myAr) 
   
  If myAr(A, 2) = 0 And Not IsDate(myAr(A, 2)) And myAr(A, 2) <> "" Then 
   iCount = iCount + 1 
   myAr(A, 2) = 0 
  Else 
   myAr(A, 2) = "=R" & A + LOffset & "C1 + 1" 
  End If 
   
  myAr(A, 1) = iCount 
 Next A 
 
Range(Bereich, Bereich.Offset(0, 1)).FormulaR1C1 = myAr 
 
End Sub 
 
Sub Start_Gruppierung() 
Dim Bereich As Range, rZeilen As Range 
 
With Application 
 .ScreenUpdating = False 
 .EnableEvents = False 
     
    'hier die Tabelle anpassen **************************************************** 
    With Tabelle2 
         'hier eventuell den Bereich anpassen 
         Set Bereich = .Range("A6", .Cells(.Rows.Count, 2).End(xlUp).Offset(0, -1)) 
           
            Call Nummern(Bereich) 'Nummerierung durchführen 
                 
                .Columns(1).ClearOutline 
                .Outline.AutomaticStyles = False 
                .Outline.SummaryRow = xlAbove 
                .Outline.SummaryColumn = xlLeft 
             
            For Each Bereich In Bereich 
                If rZeilen Is Nothing Then 
                 Set rZeilen = Bereich.Offset(1, 0) 
                End If 
 
                If Bereich.Offset(1, 0) <> Bereich Then 
                 Set rZeilen = .Range(rZeilen, Bereich).EntireRow 
                 rZeilen.Rows.Group 
                 Set rZeilen = Nothing 
                End If 
            Next Bereich 
    End With 
  
 .ScreenUpdating = True 
 .EnableEvents = True 
End With 
End Sub 
 
 
Gruß Tino
Anzeige
AW: Nummerierung erneuern und Zeilen gruppieren!
14.07.2009 06:25:05
Lemmi
Hallo Tino,
vielen Dank für Deine Hilfe!
Ich hahe gerade das Makro ausprobiert .....leider hat sich wohl ein kleiner Fehler eingeschlichen!
Die Nummerierung in Spalte B bezieht sich nicht mehr auf die "Kopft" Zeile in Spalte B sondern immer auf die Zelle in Spalte A.
Der Makro- Abschnitt (Programmteil) war im ersten Makro von Dir richtig!
Siehe Tabelle: https://www.herber.de/bbs/user/63155.xls
Kannst Du noch einmal das Makro anpassen?
Alles andere passt Prima!
Gruß
Lemmi
Anzeige
AW: Nummerierung erneuern und Zeilen gruppieren!
14.07.2009 17:21:44
Tino
Hallo,
ersetze die Sub Nummern durch diese.
'Makro für die Nummer 
Sub Nummern(ByVal Bereich As Range)
Dim iCount As Long, A As Long
Dim myAr
 
 myAr = Range(Bereich, Bereich.Offset(0, 1))
 
 For A = 1 To Ubound(myAr)
   
  If myAr(A, 2) = 0 And Not IsDate(myAr(A, 2)) And myAr(A, 2) <> "" Then
   iCount = iCount + 1
   myAr(A, 2) = 0
  Else
   myAr(A, 2) = "=R[-1]C+1"
  End If
   
  myAr(A, 1) = iCount
 Next A
 
Range(Bereich, Bereich.Offset(0, 1)).FormulaR1C1 = myAr
 
End Sub
Gruß Tino
Anzeige
AW: Nummerierung erneuern und Zeilen gruppieren!
14.07.2009 20:05:49
Lemmi
Hallo Tino,
perfekt! Vielen vielen Dank!
Gruß
Lemmi
AW: Nummerierung erneuern und Zeilen gruppieren!
14.07.2009 20:26:04
Lemmi
Hallo Toni,
brauch doch noch eine Anpassunng!
...wie kann ich denn nun das Marko von Tabelle 2 unabhängig machen!
Also immer wenn das Marko gestartet wird soll das aktuelle Arbeitsblatt abgearbeitet!
'hier die Tabelle anpassen ****************************************************
With Tabelle2
Gruß
Lemmi
Anzeige
AW: Nummerierung erneuern und Zeilen gruppieren!
14.07.2009 20:41:55
Tino
Hallo,
mach aus Tabelle2 einfach Activsheet.
Gruß Tino
AW: Nummerierung erneuern und Zeilen gruppieren!
14.07.2009 20:56:15
Lemmi
Hallo Tino
vielen vielen Dank!
Gruß
Lemmi
AW: Nummerierung erneuern und Zeilen gruppieren!
14.07.2009 21:08:35
Lemmi
Hallo Tino,
leider bekomme ich eine Fehlermeldung!
"Fehler beim Kompilieren;; Variable nicht definiert!
...kannt Du noch einmal die Datei mit Marko einstellen?
Gruß
Lemmi
Anzeige
AW: Nummerierung erneuern und Zeilen gruppieren!
14.07.2009 21:14:02
Tino
Hallo,
habe meinen PC aus gemacht, bei mir ist ein Gewitter.
Gruß Tino
AW: hier Deine Datei,...
15.07.2009 18:35:27
Lemmi
Hallo Toni,
alles bestens!
Vielen Dank!
Gruß
Lemmi
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige