Clever-Excel-Forum

Normale Version: Resetten von Buttons
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hey Community!

Mittels VBA in Bombination mit Schaltflächen bzw. Toggle-Buttons schalte ich mit folgender Prozedur Filtern ein:

Code:
Private Sub ToggleButton3_Click()
Application.ScreenUpdating = False

On Error GoTo ExitSub

   If ToggleButton3.Value = True Then
       
       Worksheets("Start").Range("B3:AM432").AutoFilter Field:=1, Criteria1:=xlFilterThisMonth, Operator:=xlFilterDynamic
       
       ToggleButton2.Value = False
       ToggleButton1.Value = False
 
   Else
       ActiveSheet.ShowAllData
       
     End If
         
Application.Goto Worksheets("Start").Range("B:B").SpecialCells(xlCellTypeVisible).Areas(2).Cells(1), Scroll:=True

ExitSub:
End Sub

Die Tabelle hat nun unterschiedliche Buttons mit jeweils eigenen Filterkriterien. 
Das Problem ist nun, dass bei Betätigung eines zweiten Filters bzw. Buttons sich das Suchkriterium auf die visible cells bezieht und es somit zu einer verzerrten Darstellung kommt.

Wenn ich "ActiveSheet.ShowAllData " gleich nach dem If setze, so passiert leider nichts.
Wie kann ich nun die Stati der anderen Buttons beim Betätigen eines Buttons immer auf 0 setzen?
So, dass sich die Filter immer auf den originären Zustand definieren.



Beste Grüße
Hallo Joshua,

lasse das mal im Einzelschritt ablaufen, damit Du siehst wie der Code von Excel abgearbeitet wird.
BIn bereits die Prozedur Schrittweise mit F8 durchgelaufen, jedoch komme ich immer noch nicht weiter.

Wenn ich "ActiveSheet.ShowAllData " gleich nach dem If setze, so passiert weiterhin nichts. Damit resette ich ja theoretisch die Tabelle bzw. Autofilter.
Ein Schuss ins Blaue ... könnte ein

Application.ScreenUpdating = True

vor dem End Sub helfen?

LG Gerd
Hallo Joshua,

oder

Code:
Worksheets("Start").ShowAllData
Vielen Dank für eure Hilfe!
Irgendwie stehe ich aber komplett auf dem Schlauch :/

Code:
Private Sub ToggleButton2_Click()
Application.ScreenUpdating = False
Worksheets("Start").Range("B1").Select

Dim SKMonat As Variant


On Error GoTo ExitSub

   If ToggleButton2.Value = True Then
   
       ToggleButton3.Value = False
       ToggleButton1.Value = False
       
       Worksheets("Start").ShowAllData
       
       With Worksheets("Start")
           SKMonat= WorksheetFunction.VLookup(CLng(Date), .Range("B3:AM432"), 31, False)
           .Range("B3:AM432").AutoFilter Field:=31, Criteria1:=SKMonat, Operator:=xlOr, Field:=31, Criteria1:=SuchKriteriumStanzmonat
       End With
   
   Else
       ActiveSheet.ShowAllData
       
         End If
     
Application.Goto Worksheets("Start").Range("B:B").SpecialCells(xlCellTypeVisible).Areas(2).Cells(1), Scroll:=True
Application.ScreenUpdating = True
ExitSub:
End Sub

Jetzt funktioniert nichts mehr...
Hallo Joshua,

wenn du in einem Click-Code vom ToggleButton2 folgende Codezeile

Code:
ToggleButton3.Value = False

hast, dann löst du eventuell ein weiteres Click-Ereignis aus (in dem Fall das Click-Ereignis vom ToggleButton3) und wenn sich das auf den ToggleButton2 springt es wieder ins ToggleButton2_Click-Ereignis usw.
Vielen Dank für die Antwort.

Wie lassen sich denn alle Buttons mit einer Ereigniss sogesehen auf false setzen, also sogesehen resetten?
Hallo,

vielleicht so?

Code:
Private bolAus As Boolean

Private Sub ToggleButton2_Click()


   Dim SKMonat As Variant
   Dim lngC As Long
  
   If bolAus Then Exit Sub
   Application.ScreenUpdating = False
   Worksheets("Start").Range("B1").Select
  
   On Error GoTo ExitSub
  
   bolAus = True
   For lngC = 1 To 3
      Controls ("ToggleButton" & lngC) - Value = False
   Next lngC
  
   bolAus = False
  
   If ToggleButton2.Value = True Then
  
      ToggleButton3.Value = False
      ToggleButton1.Value = False
      
      Worksheets("Start").ShowAllData
      
      With Worksheets("Start")
         SKMonat = WorksheetFunction.VLookup(CLng(Date), .Range("B3:AM432"), 31, False)
         .Range("B3:AM432").AutoFilter Field:=31, Criteria1:=SKMonat, Operator:=xlOr, Field:=31, Criteria1:=SuchKriteriumStanzmonat
      End With
      
   Else
      ActiveSheet.ShowAllData
  
   End If
  
   Application.Goto Worksheets("Start").Range("B:B").SpecialCells(xlCellTypeVisible).Areas(2).Cells(1), Scroll:=True
   Application.ScreenUpdating = True
ExitSub:
End Sub

Beachte bitte die Modulvariable!