Anzeige
Archiv - Navigation
1716to1720
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

Zeilen mittels ToggleButton ausblenden, wo ein Datum eingetragen ist

Zeilen mittels ToggleButton ausblenden, wo ein Datum eingetragen ist
22.10.2019 09:21:37
Holger
Hallo,
mit einem ToggleButton möchte ich in einer Tabelle Zeilen aus- und einblenden, wenn in den Zellen in der Spalte 10 ein Datum eingetragen ist. Alle Zellen in Spalte 10 ab Zeile 3 haben das Format TT.MM.JJJJ;@, wobei ich das Format ändern kann. Die Tabelle besteht insgesamt aus 12 Spalten mit zwei Zeilen mit Überschriften.
Durch Recherche habe ich bisher folgenden VBA Code, der aber nicht funktioniert. Ich hatte die Idee, alle Zellen in Spalte 10, die ungleich leer sind, auszublenden. Leider wird dann nur die Zeile 1 mit einer Überschrift ausgeblendet.
Ich denke, dass der Code alle Zellen in Spalte 10, wo ein Datum eingetragen ist, finden und dann ausblenden muss. Nur habe ich keine Idee, wie ich den Code schreiben muss und hoffe sehr, dass Ihr mir helfen könnt. Für Euch wird das vermutlich nur ein Schmunzeln bedeuten.
Anmerkung: Das Datum bedeutet, wann ein Vorgang, der in der jeweiligen Zeile eingetragen ist, zur technischen Klärung weitergeleitet worden ist.
Hier mein bisheriger Code:
Private Sub ToggleButton2_Click()
Dim TB As ToggleButton
Set TB = ToggleButton2
Dim rngRow As Range
Dim cell_ As Range
'Farbe Toggle ändern'
With ToggleButton2
.BackColor = IIf(.Value = True, RGB(204, 204, 204), RGB(255, 255, 0))
End With
'Zeilen aus und einblenden'
If TB.Value = True Then
TB.Caption = "Zeilen mit Status 'in Klärung' ausblenden"
Cells.Rows.Hidden = False
Set rngRow = Nothing
Else
TB.Caption = "Zeilen mit Status'in Klärung' einblenden"
On Error Resume Next
For Each cell_ In Columns(10).SpecialCells(xlCellTypeConstants, 2)
If cell_.Value  "" Then
If rngRow Is Nothing Then
Set rngRow = cell_.EntireRow
Else
Set rngRow = Union(rngRow, cell_.EntireRow)
End If
End If
Next
If Not rngRow Is Nothing Then rngRow.EntireRow.Hidden = True
End If
End Sub

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen mittels ToggleButton ausblenden, wo ein Datum eingetragen ist
22.10.2019 09:29:28
Daniel
HI
ein Datum ist eine Zahl.
Zellen mit bestimmten Inhalten (Zahl, Text, Wahrheitswert, Fehler) kannst du über SpecialCells gezielt auswählen:
Cells.EntireRow.Hidden = False
If Worksheetfunction.Count(Columns(10)) > 0 Then _
Columns(10).SpecialCells(xlcelltypeconstants, 1).EntireRow.Hidden = True
Gruß Daniel
AW: Zeilen mittels ToggleButton ausblenden, wo ein Datum eingetragen ist
22.10.2019 09:55:29
Holger
Hallo,
das funktioniert super. Jetzt hat sich noch ein neues Problem ergeben, was ich vorher nicht gesehen hatte.
Ich habe insgesamt zwei ToggleButtons, womit ich jeweils Zeilen ausblenden und einblenden kann. Das Ausblenden funktioniert nun einwandfrei, nur beim Einblenden werden ALLE vorher ausgeblendeten Zeilen wieder eingeblendet. Es sollen aber nur die Zeilen wieder eingeblendet werden, die vorher über den jeweiligen Button ausgeblendet worden sind.
Button 2 ist der Code meiner ursprünglichen Frage bzgl. des Datums,
Button 1 blendet alle Zeilen aus, wo in Spalte 12 ein X steht (Kennzeichen für "Vorgang erledigt").
Wie müsste der Code jeweils erweitert werden?
Private Sub ToggleButton1_Click()
Dim TB As ToggleButton
Set TB = ToggleButton1
Dim rngRow As Range
Dim cell_ As Range
'Farbe Toggle ändern'
With ToggleButton1
.BackColor = IIf(.Value = True, RGB(204, 204, 204), RGB(255, 69, 0))
End With
'Zeilen aus und einblenden'
If TB.Value = True Then
TB.Caption = "Zeilen mit Status 'erledigt' ausblenden"
Cells.Rows.Hidden = False
Set rngRow = Nothing
Else
TB.Caption = "Zeilen mit Status 'erledigt' einblenden"
On Error Resume Next
For Each cell_ In Columns(12).SpecialCells(xlCellTypeConstants, 2)
If cell_.Value = "X" Then
If rngRow Is Nothing Then
Set rngRow = cell_.EntireRow
Else
Set rngRow = Union(rngRow, cell_.EntireRow)
End If
End If
Next
If Not rngRow Is Nothing Then rngRow.EntireRow.Hidden = True
End If
End Sub

Private Sub ToggleButton2_Click()
Dim TB As ToggleButton
Set TB = ToggleButton2
Dim rngRow As Range
Dim cell_ As Range
'Farbe Toggle ändern'
With ToggleButton2
.BackColor = IIf(.Value = True, RGB(204, 204, 204), RGB(255, 255, 0))
End With
'Zeilen aus und einblenden'
If TB.Value = True Then
TB.Caption = "Zeilen mit Status 'in Klärung' ausblenden"
Cells.Rows.Hidden = False
Set rngRow = Nothing
Else
TB.Caption = "Zeilen mit Status'in Klärung' einblenden"
On Error Resume Next
For Each cell_ In Columns(10).SpecialCells(xlCellTypeConstants, 2)
If WorksheetFunction.Count(Columns(10)) > 0 Then _
Columns(10).SpecialCells(xlCellTypeConstants, 1).EntireRow.Hidden = True
Next
If Not rngRow Is Nothing Then rngRow.EntireRow.Hidden = True
End If
End Sub

Anzeige
AW: Zeilen mittels ToggleButton ausblenden, wo ein Datum eingetragen ist
22.10.2019 10:05:25
Daniel
HI
ich würde für beide Togglebuttons den gleichen Code verrwenden und dort folgendes tun
1. alle Zeilen einblenden
2. wenn Togglebutton1 auf "ausblenden", dann alle Zeilen für Togglebutton1 ausblenden
3. wenn Togglebutton2 auf "ausblenden", dann alle Zeilen für Togglebutton2 ausblenden.
du könntest das auch in ein drittes Makro schreiben und dann das Makro von beiden Togglebuttons aus aufrufen.
Gruß Daniel
AW: Zeilen mittels ToggleButton ausblenden, wo ein Datum eingetragen ist
22.10.2019 10:13:55
Holger
Hallo,
da musst Du mir helfen und den Code schreiben, der dazu notwendig ist. Ich bin kein Experte, verstehe nur ein wenig von VBA, aber das übersteigt meine Fähigkeiten. Kannst Du helfen? Die Codes hatte ich ja angegeben.
Anzeige
AW: Zeilen mittels ToggleButton ausblenden, wo ein Datum eingetragen ist
22.10.2019 10:16:03
Daniel
nein, muss ich nicht.
ich bin nicht dein kostenloser Service-Dienstleister.
du brauchst ja keinen prinizpell neuen Code schreiben, sondern musst nur beide Codes zu einem zusammenfassen.
und das Schreiben der ersten beiden Codes hast du ja auch alleine hinbekommen.
Gruß Daniel
AW: Zeilen mittels ToggleButton ausblenden, wo ein Datum eingetragen ist
22.10.2019 10:19:41
Holger
Noch ein Nachtrag:
Die Codes habe ich nur hinbekommen durch viel Recherche, drag and drop und anpassen. Manche Programmteile sind mir ein Rätsel, funktionieren aber. Ich bin aber ganz weit weg davon, derartige Codes selber zu schreiben.
Daher wäre es toll, wenn Du helfen könntest.
Ja klar bist Du kein Service-Dienstleister, das ist mir doch klar. Ich brauche hier aber Hilfe bzw. Unterstützung, da ich das selber nicht hinbekomme.
Anzeige
AW: Zeilen mittels ToggleButton ausblenden, wo ein Datum eingetragen ist
22.10.2019 10:16:35
Holger
Nachtrag:
gewünscht ist:
1. wenn Togglebutton1 auf "ausblenden", dann alle Zeilen für Togglebutton1 ausblenden
2. wenn Togglebutton1 auf "einblenden", dann alle Zeilen für Togglebutton1 einblenden
3. wenn Togglebutton2 auf "ausblenden", dann alle Zeilen für Togglebutton2 ausblenden.
4. wenn Togglebutton2 auf "einblenden", dann alle Zeilen für Togglebutton2 einblenden.
AW: Zeilen mittels ToggleButton ausblenden, wo ein Datum eingetragen ist
22.10.2019 11:58:09
Daniel
also meinet wegen.
unter der annahme dass auch in Spalte 12 die x von Hand eingetragen werden, würde ich folgenden Code für beide Togglebuttons einsetzten:
Cells.EntireRow.Hidden = False
If Togglebutton1 then
With Columns(12)
if Worksheetfunction.CountA(.Cells) > 1 then _
.SpecialCells(xlcelltypeconstants, 2).EntireRow.Hidden = True
end with
end if
if Togglebutton2 Then
With Columns(10)
if Worksheetfunction.Count(.Cells) > 0 then _
.SpecialCells(xlcelltypeconstants, 1).EntireRow.Hidden = True
end with
end If
damit dir beim Ausblenden der "x" in Spalte 10 die Überschriftenzeilen stehen bleiben, solltest du diese als Formel schreiben, dh ="ÜberschriftenText", da das .SpecialCells mit xlcelltypeconstants Zellen mit Formel überspringt.
gruß Daniel
Anzeige
AW: Zeilen mittels ToggleButton ausblenden, wo ein Datum eingetragen ist
22.10.2019 12:56:04
Holger
Hallo Daniel,
Danke für Deine Unterstützung. Ich habe ein wenig gebraucht, weil ich nicht wusste, welchen Programmteil ich austauschen muss. Mein jetziger Code sieht wie folgt aus. Leider klappt das noch nicht. Wenn ich mittels Toggle 1 und Toggle 2 die jeweiligen Zeilen ausgeblendet habe, und dann einen der Buttons wieder drücke, werden ALLE Zeilen wieder eingeblendet, was nicht sein soll. Damit einhergehend ist dann die Farbgebung des anderen Buttons nicht richtig.
Der Code sieht so schön einfach aus, hilfreich der Tipp der Formel in der Überschrift. Aber das Problem, dass nur die Zeilen von Toggle 1 ein- und auszublenden sind ebenso wie nur bei Toggle 2, dass also beide Buttons völlig separat voneinander funktionieren müssen, besteht weiterhin.
Kannst Du noch einmal helfen?
Gruss
Private Sub ToggleButton1_Click()
Dim TB As ToggleButton
Set TB = ToggleButton1
Dim rngRow As Range
Dim cell_ As Range
'Farbe Toggle ändern'
With ToggleButton1
.BackColor = IIf(.Value = True, RGB(204, 204, 204), RGB(255, 69, 0))
End With
If TB.Value = True Then
TB.Caption = "Zeilen mit Status 'erledigt' ausblenden"
Else
TB.Caption = "Zeilen mit Status 'erledigt' einblenden"
Cells.EntireRow.Hidden = False
If ToggleButton1 Then
With Columns(12)
If WorksheetFunction.CountA(.Cells) > 1 Then _
.SpecialCells(xlCellTypeConstants, 2).EntireRow.Hidden = True
End With
End If
If ToggleButton2 Then
With Columns(10)
If WorksheetFunction.Count(.Cells) > 0 Then _
.SpecialCells(xlCellTypeConstants, 1).EntireRow.Hidden = True
End With
End If
End Sub
Private Sub ToggleButton2_Click()
Dim TB As ToggleButton
Set TB = ToggleButton2
Dim rngRow As Range
Dim cell_ As Range
'Farbe Toggle ändern'
With ToggleButton2
.BackColor = IIf(.Value = True, RGB(204, 204, 204), RGB(255, 255, 0))
End With
'Zeilen aus und einblenden'
If TB.Value = True Then
TB.Caption = "Zeilen mit Status 'in Klärung' ausblenden"
Else
TB.Caption = "Zeilen mit Status'in Klärung' einblenden"
Cells.EntireRow.Hidden = False
If ToggleButton1 Then
With Columns(12)
If WorksheetFunction.CountA(.Cells) > 1 Then _
.SpecialCells(xlCellTypeConstants, 2).EntireRow.Hidden = True
End With
End If
If ToggleButton2 Then
With Columns(10)
If WorksheetFunction.Count(.Cells) > 0 Then _
.SpecialCells(xlCellTypeConstants, 1).EntireRow.Hidden = True
End With
End If
End Sub

Anzeige
AW: Zeilen mittels ToggleButton ausblenden, wo ein Datum eingetragen ist
22.10.2019 13:15:43
Daniel
hi
ohne die Datei schwierig.
wie verhält sich denn dieser Code im Vergleich zu dem, was du erwartest?
btw, wenn du dir im Code schon Variablen für die Togglebuttons definierst, dann solltest du die auch durchgängig verwenden und nicht mal die Variable verwenden und mal den Objektnamen.
Gruß Daniel
AW: Zeilen mittels ToggleButton ausblenden, wo ein Datum eingetragen ist
22.10.2019 13:42:15
Holger
Hallo Daniel,
ich habe meine Datei nun hochgeladen, ohne Deinen letzten Änderungsvorschlag. Kennwort habe ich rausgenommen, hoffe, dass ich alles erwischt habe.
Du hast Recht, mit einer Datei ist es - denke ich - deutlich leichter zu verstehen.
Ich hoffe, dass Du mir helfen kannst.
https://www.herber.de/bbs/user/132653.xlsm
Das mit der Benennung von Variablen u.s.w. kann ich einfach nicht. Ich habe mir aus dem Internet einige Anregungen geholt, dann ausprobiert bis zu dem Stand wie hier beigefügt. Ob und wie ich etwas definieren muss, weiß ich ehrlich gesagt nicht. Aber es hat ja schonmal gar nicht sooo schlecht funktioniert - bis im Arbeitskreis die Forderung nach einem zweiten Button hochkam und beschlossen wurde. Bis dahin hatte ich nur den einen Togglebutton1, der für sich alleine wunderbar funktionierte, nur aber nicht im Zusammenspiel mit einem zweiten Button.
Gruss, Holger
Anzeige
AW: Zeilen mittels ToggleButton ausblenden, wo ein Datum eingetragen ist
22.10.2019 16:00:00
Daniel
leider kann ich mir deinen Code nicht anschauen.
wie wäre es, ihr besucht mal einen Excelkurs und lernt beispielsweise, wie man mit dem Autofilter arbeitet.
im Prinzip gibt's das alles, was du jetzt programmieren willst, in Excel schon, man muss es nur nutzen.
Gruß Daniel
AW: Zeilen mittels ToggleButton ausblenden, wo ein Datum eingetragen ist
22.10.2019 16:17:52
Holger
Grrr, entschuldige bitte. Ich hatte ein Kennwort vergessen zu entfernen. Hier nun ohne Kennwort
https://www.herber.de/bbs/user/132662.xlsm
Die Vorlage soll von mehreren Personen separat (einzeln) genutzt werden und gegen Veränderungen geschützt sein. Autofilter kenne ich nicht, nur den "normalen" Filter. Ich wüsste aber nicht, wie ich einen Filter in einer geschützten Datei für andere, die mit Excel überhaupt nicht umgehen können, einfach und verständlich einrichten könnte. Deshalb bin ich ja hier im Forum und hoffe auf Hilfe. Wenn es eine gänzlich andere Lösung geben sollte, dann gerne.
Ich fand die Lösung mittels Buttons schon gut, die Kollegen im Arbeitskreis auch. Andere Features von Excel sind den Kollegen überwiegend unbekannt. Die Leute besuchen auch schon mal einen Excelkurs, wenn man aber Excel im täglichen Doing nicht benötigt, dann werden schnell einfachste Sachen wieder vergessen.
Hoffe, Du bist nicht zu sehr genervt und hilfst mir.
Gruss Holger
Anzeige
AW: Zeilen mittels ToggleButton ausblenden, wo ein Datum eingetragen ist
22.10.2019 16:36:32
Daniel
Im Prinzip reicht dir zum ein- und Ausblenden dieser Code.
geht für beide Buttons, wenn du die Variable verwendest und zu beginn richtig zuweist.
du musst nur die Spaltennummer (field:=...) richtig einstellen, je nach der Spalten in der gefiltert werden soll.
außerdem solltest du in Zeile 2 eine Leerzeile einfügen.
damit das funktioniert, muss die Tabelle aus einer Zeile Überschrift und ansonsten Datenzeilen bestehen. Durchgehende Leerzeilen innnerhalb der Tabelle sind auch nicht zulässig (das .CurrentRegion ermittelt die Tabellengröße anhand der umgebenden Leerzeilen/Spalten)
'Blumhof: Zeilen aus und einblenden'
With Cells(3, 1).CurrentRegion
If TB Then
.AutoFilter field:=10, Criteria1:="="
Else
.AutoFilter field:=10
End If
End With
'Call Alle_Blätter_schützen
Gruß Daniel
Anzeige
AW: Zeilen mittels ToggleButton ausblenden, wo ein Datum eingetragen ist
23.10.2019 10:31:38
Holger
Hallo Daniel,
vielen Dank für Deine Hilfe. Es hat nun ein wenig gedauert, da ich die Exceltabelle umstrukturieren musste. Da ich nur noch eine Zeile als Überschrift haben darf, musste ich ein wenig basteln, damit die Tabelle mit den Buttons immer noch "schön" aussieht. Das Auge isst ja mit, ist aber auch rein subjektiv, ob es nun schön oder unschön aussieht.
Was ich leider nicht mehr habe ist die Änderung der Farbe der ToggleButtons, das hat nicht richtig geklappt. Das wäre nice to have gewesen, aber nicht lebensnotwendig.
Nicht so schön ist, dass nun die Filterbuttons in der Excelvorlage erscheinen, aber auch das ist nicht lebensnotwendig. Dafür ist aber der Code deutlich einfacher, kürzer, was ja nun auch nicht schlecht ist.
Und das Wichtigste: Es funktioniert!
Wenn Du noch einen Tipp bzgl. der Farbänderung hast, würde ich mich sehr freuen. Ansonsten wurde mir hier hervorragend geholfen. DANKE.
Gruß Holger
Anzeige
AW: Zeilen mittels ToggleButton ausblenden, wo ein Datum eingetragen ist
23.10.2019 13:11:44
Daniel
Hi
die Farbänderung hast du doch schon funktionierend in deinem Code drin stehen gehabt.
da musst du dich halt mal mit deinem Code auseinander setzen, schauen welche Codeteile im alten Code für die Farbänderung verantwortlich sind und diese dann in den neuen Code übernehmen.
für die zusätzliche Zeile hättest du nichts umformatieren müssen.
einfach neue Zeile zwischen Zeile 1 und 2 einfügen und diese ausblenden, das reicht.
wichtig ist, dass deine Tabelle, deren Größe du per Code mit .CurrentRegion ermitteln willst, sauber durch durchgehende Leerzeilen und Spalten von den restlichen Inhalten der Tabelle getrennt ist (gefüllte Zellen, Buttons sind egal)
und dass man beachtet, dass Excel beim Sortiern und Filtern immer von einer Überschriftenzeile ausgeht.
Gruß Daniel

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige