05.09.2020, 13:46
Hallo zusammen,
darf ich Euch mal wieder um Eure werte Hilfe bitten?
In einer immer weiterwachsenden Datentabelle trage ich einer Spalte ("N") einen Status des entsprechenden Datensatzes ein, z.B. neu, offen, OK.
Datensätze aus der gleichen Kategorie stehen immer untereinander und sind in einem Block zusammengefasst. Der Block beginnt jeweils mit einer Überschrift und endet mit einer Leerzeile.
Nach der Leerzeile beginnt dann der nächste Block usw....... Die Überschriftenzeile ist farblich hervorgehoben, die Leerzeile dagegen nicht.
Da die Tabelle hunderte von Zeilen und Datensätze haben kann, will ich der Übersichtlichkeit halber, alle Datensätze die komplett den Status "OK" haben ausblenden können.....und zwar komplett mit seiner Überschrift und der Leerzeile nach dem Datenblock. Befindet sich innerhalb eines Datensatzes noch ein Element, das den Status "neu" oder "offen" hat, soll der Datensatz nicht ausgeblendet werden. Bisher habe ich das quasi manuell gelöst indem ich über ein Makro den Datenblock in der entsprechenden Zelle mit "Headder" und "Space" gekennzeichnet habe.
Anhand dieser "Marker" habe ich dann die entsprechenden Zeilen ausgeblendet siehe Makro 2.
Nun meine Frage, wie könnte ich speziell die Beschriftung komplett automatisieren, nur wenn alle Datensätze in einem Block den Status "OK" haben?
Am Beginn eines Datenblockes mit seiner blauen Zeile soll "Headder" und am Ende in die leere Zelle soll "Space" eingetragen werden.
Das sieht dann so aus wie in der beigefügten Datei ersichtlich.
Makro 2:
darf ich Euch mal wieder um Eure werte Hilfe bitten?
In einer immer weiterwachsenden Datentabelle trage ich einer Spalte ("N") einen Status des entsprechenden Datensatzes ein, z.B. neu, offen, OK.
Datensätze aus der gleichen Kategorie stehen immer untereinander und sind in einem Block zusammengefasst. Der Block beginnt jeweils mit einer Überschrift und endet mit einer Leerzeile.
Nach der Leerzeile beginnt dann der nächste Block usw....... Die Überschriftenzeile ist farblich hervorgehoben, die Leerzeile dagegen nicht.
Da die Tabelle hunderte von Zeilen und Datensätze haben kann, will ich der Übersichtlichkeit halber, alle Datensätze die komplett den Status "OK" haben ausblenden können.....und zwar komplett mit seiner Überschrift und der Leerzeile nach dem Datenblock. Befindet sich innerhalb eines Datensatzes noch ein Element, das den Status "neu" oder "offen" hat, soll der Datensatz nicht ausgeblendet werden. Bisher habe ich das quasi manuell gelöst indem ich über ein Makro den Datenblock in der entsprechenden Zelle mit "Headder" und "Space" gekennzeichnet habe.
Anhand dieser "Marker" habe ich dann die entsprechenden Zeilen ausgeblendet siehe Makro 2.
Nun meine Frage, wie könnte ich speziell die Beschriftung komplett automatisieren, nur wenn alle Datensätze in einem Block den Status "OK" haben?
Am Beginn eines Datenblockes mit seiner blauen Zeile soll "Headder" und am Ende in die leere Zelle soll "Space" eingetragen werden.
Das sieht dann so aus wie in der beigefügten Datei ersichtlich.
Code:
'Spalte 14 "N" beschriften
Private Sub CommandButton4_Click()
xCol = ActiveCell.Column
xRow = ActiveCell.Row
If ActiveCell.Column <> 14 Then
Cells(xRow, 14).Select
End If
'Wenn Zelle "Blau"
If ActiveCell.Interior.ColorIndex = 23 Then
ActiveCell.Value = "Headder"
xRow = ActiveCell.Row + 1
Cells(xRow, 14).Select
'Wenn Zelle ohne Farbe
ElseIf ActiveCell.Interior.ColorIndex = -4142 Then
ActiveCell.Value = "Space"
'Cells(xRow, 14).Select
xRow = ActiveCell.Row + 1
Cells(xRow, 14).Select
Else
xRow = ActiveCell.Row
xRow = ActiveCell.Row + 1
Cells(xRow, 14).Select
Exit Sub
End If
End Sub
Makro 2:
Code:
'Alle Zeilen mit bestimmtem Zellinhalt ausblenden
Sub Spezielle_Zeilen_ausblenden()
Application.ScreenUpdating = False
'Hier wir die letzte Zeile der Spalte A ermittelt
letzteZeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
'MsgBox letzteZeile
For i = 6 To letzteZeile
If Cells(i, 14).Value = "OK" Or Cells(i, 14).Value = "Headder" Or Cells(i, 14).Value = "Space" Then
Rows(i).Hidden = True
End If
Next i
Application.ScreenUpdating = False
End Sub