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

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
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
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
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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige