Toggle Button mit drei zustände.
#1
Hallo an alle,
 
Habe den beigefügten Code für mein Toggle Button gebastelt.
Möchte aber das der ToggleButton statt zwei zuständen, drei zustände hat.
Habe im ToggleButton bei den Eigenschaften den Triple State  auf True gesetzt, doch habe keine Ahnung wie ich denn dritten zustand in meinen Code einbinden kann. Habe es hin und her mit herum kopieren versucht, doch ohne Erfolg, hier wird ein Profi gebraucht…der sicher nicht ich ist Smile
 
Vorhandener Code:
Code:
Private Sub ToggleButton1_Click()
ActiveWorkbook.ActiveSheet.Unprotect ("123")
Sheets("Menu").Columns("I:M").EntireColumn.Hidden = Not ToggleButton1
ActiveSheet.Range("E13, E14, E15, E16, E17, E18, E19, E20, E21, E22, E23, F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23").Cells.Locked = True
ActiveSheet.Range("J4, J5, J6, J7, J8, J9, J10, J11, J12, J13, J14, J15, J16, J17, J18, J19, J20, J21, J22, J23, K4, K5, K6, K7, K8, K9, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23").Cells.Locked = True
If ToggleButton1.Caption = "Big Picture" Then
ActiveSheet.Shapes("Textfeld 18").Visible = False
ActiveSheet.Shapes("Grafik 25").Visible = False
ToggleButton1.Caption = "Small Picture"
Else
ActiveSheet.Shapes("Textfeld 18").Visible = True
ActiveSheet.Shapes("Grafik 25").Visible = True
ActiveSheet.Range("E13, E14, E15, E16, E17, E18, E19, E20, E21, E22, E23, F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23").Cells.Locked = False
ActiveSheet.Range("J4, J5, J6, J7, J8, J9, J10, J11, J12, J13, J14, J15, J16, J17, J18, J19, J20, J21, J22, J23, K4, K5, K6, K7, K8, K9, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23").Cells.Locked = False
ToggleButton1.Caption = "Small Picture"
End If
ActiveWorkbook.ActiveSheet.Protect ("1234")
End Sub

Dritter Zustand:
Code:
Sheets("Menu").Columns("I:M").EntireColumn.Hidden = Not ToggleButton1
ActiveSheet.Shapes("Textfeld 18").Visible = True
ActiveSheet.Shapes("Grafik 25").Visible = True
ActiveSheet.Range("E13, E14, E15, E16, E17, E18, E19, E20, E21, E22, E23, F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23").Cells.Locked = False
ActiveSheet.Range("J4, J5, J6, J7, J8, J9, J10, J11, J12, J13, J14, J15, J16, J17, J18, J19, J20, J21, J22, J23, K4, K5, K6, K7, K8, K9, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23").Cells.Locked = True
ToggleButton1.Caption = "Middle Picture"
End If


Thx in Advance :-)

Niko
Top
#2
Nimm das Change Event

Code:
Private Sub ToggleButton1_Change()

   If IsNull(ToggleButton1.Value) Then
       ToggleButton1.Caption = "Value is Null"
   ElseIf ToggleButton1.Value = False Then
       ToggleButton1.Caption = "Value is False"
   ElseIf ToggleButton1.Value = True Then
       ToggleButton1.Caption = "Value is True"
   End If

End Sub
[-] Folgende(r) 1 Nutzer sagt Danke an Storax für diesen Beitrag:
  • Niko
Top
#3
Hallo Niko,

ungetestet:
Private Sub ToggleButton1_Change()
ActiveWorkbook.ActiveSheet.Unprotect ("123")
Sheets("Menu").Columns("I:M").EntireColumn.Hidden = Not ToggleButton1
ActiveSheet.Range("E13, E14, E15, E16, E17, E18, E19, E20, E21, E22, E23, F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23").Cells.Locked = True
ActiveSheet.Range("J4, J5, J6, J7, J8, J9, J10, J11, J12, J13, J14, J15, J16, J17, J18, J19, J20, J21, J22, J23, K4, K5, K6, K7, K8, K9, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23").Cells.Locked = True
If IsNull(ToggleButton1.Value) Then
Sheets("Menu").Columns("I:M").EntireColumn.Hidden = Not ToggleButton1
ActiveSheet.Shapes("Textfeld 18").Visible = True
ActiveSheet.Shapes("Grafik 25").Visible = True
ActiveSheet.Range("E13, E14, E15, E16, E17, E18, E19, E20, E21, E22, E23, F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23").Cells.Locked = False
ActiveSheet.Range("J4, J5, J6, J7, J8, J9, J10, J11, J12, J13, J14, J15, J16, J17, J18, J19, J20, J21, J22, J23, K4, K5, K6, K7, K8, K9, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23").Cells.Locked = True
ToggleButton1.Caption = "Middle Picture"
ElseIf ToggleButton1.Value = False Then
ActiveSheet.Shapes("Textfeld 18").Visible = False
ActiveSheet.Shapes("Grafik 25").Visible = False
ToggleButton1.Caption = "Small Picture"
ElseIf ToggleButton1.Value = True Then
ActiveSheet.Shapes("Textfeld 18").Visible = True
ActiveSheet.Shapes("Grafik 25").Visible = True
ActiveSheet.Range("E13, E14, E15, E16, E17, E18, E19, E20, E21, E22, E23, F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23").Cells.Locked = False
ActiveSheet.Range("J4, J5, J6, J7, J8, J9, J10, J11, J12, J13, J14, J15, J16, J17, J18, J19, J20, J21, J22, J23, K4, K5, K6, K7, K8, K9, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23").Cells.Locked = False
ToggleButton1.Caption = "Big Picture"
End If
ActiveWorkbook.ActiveSheet.Protect ("1234")
End Sub
Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Niko
Top
#4
Nie gesehen/gelernt ?


Code:
Range("E13:F23")

PS. Verzichte auf 'Protection' In Excel
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • Niko
Top
#5
Hallo Uwe,
vorabe Vielen Dank für deine Mühe Smile
Läuft fast perfekt Smile..bei middle Pcture sollten die spalten geschlossen bleiben doch dies tut er nicht.
Sheets("Menu").Columns("I:M").EntireColumn.Hidden = Not ToggleButton1...müsste doch auch in Middle Picure eingefügt werden...oder?


Danke,
Niko
Top
#6
Hi Storax,

Danke für deine Antwort...doch ich komme damit nicht zu recht....soll nicht heissen das dein ansatz falsch ist doch ich griege es nicht in meine Code rein.

Danke,
Niko
Top
#7
Hi snb,

danke dir auch für diene Antwort....weiss hätte es kürzer haben können Smile..doch wie es so ist es fängt mit einer Zelle an und am ende hat man ganze reihen.
Mein Problem ist aber mehr den Toggle Button zur vernuft zu bringen ...bzw. mich, mit eurer hilfe ein bischen schlauer zu machen...was nicht immer bei mir klappen kann ...hahaha.


Thx,
Niko
Top
#8
(02.02.2019, 22:18)Niko schrieb: Hi Storax,

Danke für deine Antwort...doch ich komme damit nicht zu recht....soll nicht heissen das dein ansatz falsch ist doch ich griege es nicht in meine Code rein.

Danke,
Niko

Du erkennst aber die Struktur aus meiner Antwort in Kuwers Antwort wieder, oder?

Code:
=>> Private Sub ToggleButton1_Change()
 ActiveWorkbook.ActiveSheet.Unprotect ("123")
 Sheets("Menu").Columns("I:M").EntireColumn.Hidden = Not ToggleButton1
 ActiveSheet.Range("E13, E14, E15, E16, E17, E18, E19, E20, E21, E22, E23, F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23").Cells.Locked = True
 ActiveSheet.Range("J4, J5, J6, J7, J8, J9, J10, J11, J12, J13, J14, J15, J16, J17, J18, J19, J20, J21, J22, J23, K4, K5, K6, K7, K8, K9, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23").Cells.Locked = True
=>>  If IsNull(ToggleButton1.Value) Then
   Sheets("Menu").Columns("I:M").EntireColumn.Hidden = Not ToggleButton1
   ActiveSheet.Shapes("Textfeld 18").Visible = True
   ActiveSheet.Shapes("Grafik 25").Visible = True
   ActiveSheet.Range("E13, E14, E15, E16, E17, E18, E19, E20, E21, E22, E23, F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23").Cells.Locked = False
   ActiveSheet.Range("J4, J5, J6, J7, J8, J9, J10, J11, J12, J13, J14, J15, J16, J17, J18, J19, J20, J21, J22, J23, K4, K5, K6, K7, K8, K9, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23").Cells.Locked = True
   ToggleButton1.Caption = "Middle Picture"
==>  ElseIf ToggleButton1.Value = False Then
   ActiveSheet.Shapes("Textfeld 18").Visible = False
   ActiveSheet.Shapes("Grafik 25").Visible = False
   ToggleButton1.Caption = "Small Picture"
==>  ElseIf ToggleButton1.Value = True Then
   ActiveSheet.Shapes("Textfeld 18").Visible = True
   ActiveSheet.Shapes("Grafik 25").Visible = True
   ActiveSheet.Range("E13, E14, E15, E16, E17, E18, E19, E20, E21, E22, E23, F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23").Cells.Locked = False
   ActiveSheet.Range("J4, J5, J6, J7, J8, J9, J10, J11, J12, J13, J14, J15, J16, J17, J18, J19, J20, J21, J22, J23, K4, K5, K6, K7, K8, K9, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23").Cells.Locked = False
   ToggleButton1.Caption = "Big Picture"
==>  End If
[-] Folgende(r) 1 Nutzer sagt Danke an Storax für diesen Beitrag:
  • Niko
Top
#9
Private Sub ToggleButton1_Change(): ToggleButton1 = ToggleButton1 + 1: End Sub

und dann abfragen mit 

Select Case ToggleButton1 Mod 3
  Case 0: ...
  Case 1: ...
  Case 2: ...
End Select
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
[-] Folgende(r) 1 Nutzer sagt Danke an LCohen für diesen Beitrag:
  • Niko
Top
#10
Hallo an alle,
nach langen hin und her kopieren habe ich den Code von Uwe eingebaut. Funktioniert soweit gut, bis auf die spalten. Die lassen sich nicht verstecken in zwei zuständen und in einen nicht.
Wie Ihr gemerkt habt, mein VBA wissen lässt zu wünschen übrig…milde ausgedrückt Smile
 
Meine Frage aus dem ganzen…Wie kann ich in den angegebenen Code die Spalten I:M in zwei zuständen ausblenden und in einen Zustand nicht?

Anbei der Code.

Code:
Private Sub ToggleButton1_Change()
 ActiveWorkbook.ActiveSheet.Unprotect ("1234")
 Sheets("Menu").Columns("I:M").EntireColumn.Hidden = Not ToggleButton1
 ActiveSheet.Range("E13, E14, E15, E16, E17, E18, E19, E20, E21, E22, E23, F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23").Cells.Locked = True
 ActiveSheet.Range("J4, J5, J6, J7, J8, J9, J10, J11, J12, J13, J14, J15, J16, J17, J18, J19, J20, J21, J22, J23, K4, K5, K6, K7, K8, K9, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23").Cells.Locked = True
 If IsNull(ToggleButton1.Value) Then
    Sheets("Menu").Columns("I:M").EntireColumn.Hidden = Not ToggleButton1
   
   ActiveSheet.Shapes("Textfeld 18").Visible = False
   ActiveSheet.Shapes("Grafik 25").Visible = False
   ActiveSheet.Range("E13, E14, E15, E16, E17, E18, E19, E20, E21, E22, E23, F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23").Cells.Locked = False
   ActiveSheet.Range("J4, J5, J6, J7, J8, J9, J10, J11, J12, J13, J14, J15, J16, J17, J18, J19, J20, J21, J22, J23, K4, K5, K6, K7, K8, K9, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23").Cells.Locked = True
   ToggleButton1.Caption = "Middle Picture"
 ElseIf ToggleButton1.Value = False Then
   ActiveSheet.Shapes("Textfeld 18").Visible = True
   ActiveSheet.Shapes("Grafik 25").Visible = True
   ToggleButton1.Caption = "Small Picture"
 ElseIf ToggleButton1.Value = True Then
'Sheets("Menu").Columns("I:M").EntireColumn.Hidden = Not ToggleButton1
   ActiveSheet.Shapes("Textfeld 18").Visible = False
   ActiveSheet.Shapes("Grafik 25").Visible = False
   ActiveSheet.Range("E13, E14, E15, E16, E17, E18, E19, E20, E21, E22, E23, F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23").Cells.Locked = False
   ActiveSheet.Range("J4, J5, J6, J7, J8, J9, J10, J11, J12, J13, J14, J15, J16, J17, J18, J19, J20, J21, J22, J23, K4, K5, K6, K7, K8, K9, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23").Cells.Locked = False
   ToggleButton1.Caption = "Big Picture"
 End If
 ActiveWorkbook.ActiveSheet.Protect ("1234")
End Sub

Großes Danke schön, an alle Smile
 

Ps: By the way...kann ich eine Datei in diesen forum hochladen?...um besser zu zeigen was ich meine.

Niko
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste