1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Excel: Toggle-Button mit Farb- und Schriftwechsel der Sheets versteckt bzw. aufdeckt

Discussion in 'Office-Programme' started by sTeFaN1989, Aug 18, 2009.

Thread Status:
Not open for further replies.
  1. sTeFaN1989

    sTeFaN1989 Byte

    Hallo Leute,

    ich habe eine Frage zu Toggle-Button.

    Ich brauche einen ToggleButton, der bei Aktivierung grün wird und ansonsten rot ist. Außerdem soll er den Schriftzug ändern.

    Nun meine Frage..Ich habe folgenden Code:
    Code:
    Private Sub ToggleButton1_Click()
    
    With ToggleButton1
             .BackColor = IIf(.Value = True, RGB(0, 255, 0), RGB(255, 0, 0))
             .Caption = "Button ist " & IIf(.Value = True, "eingeschaltet", "ausgeschaltet")
        End With
    
    End Sub
    Der funktioniert soweit auch, jedoch wundert mich warum das Grün ein gemischtes Grün/Grau ist. Gibt es einen Möglichkeit zu richtigen Grün oder gar zu anderen Farben zu kommen???

    Dann noch meine Frage wie kann ich mit dem Togglebutton zum Beispiel ein Sheet 'x' verstecken bzw wieder aufdecken?

    Also das ganze soll dann mal so aussehen:

    Button inaktiv -> Rot(oder eventuell andere Farbe) -> Sheet versteckt -> Caption'sheet ist inaktiv'

    TOGGLE

    Button aktiv -> Grün(oder andere Farbe) -> Sheet sichtbar -> Caption'sheet ist aktiv'

    Danke schonmaa :)

    Gruß sTeFaN
     
  2. Urs2

    Urs2 Megabyte

    Hallo Stefan,

    Farbe >
    Wenn der ToggleButton (im deutschen Excel = Umschaltfläche) ins Blatt gesetzt wird, so hat er das übliche Steuerelement-Grau.
    Wenn Du ihn ohne Makro schaltest bleibt er zwar grau, aber ein verwaschenes Grau. Das "Waschen" ist ihm also inhärent.
    Dasselbe macht er dann auch mit Deinem Grün !

    Versuche dem Grün mehr oder weniger Blau beizumischen, vielleicht wird es dann besser.zB RGB(0, 255, 100)
    Ein richtig kräftiges Grün wirst Du allerdings nicht erreichen können.

    Mit RotGrünBlau = RGB hast Du die ganze Farbpalette zur Verfügung.
    Das Minimum (0,0,0) ist Schwarz, das Maximum (255,255,255) ist Weiss, dazwischen kannst Du jeden Farbanteil mischen.


    Befehle >
    Code:
    Private Sub ToggleButton1_Click()
    
    With ToggleButton1
        If ToggleButton1 = True Then
            Sheets("BlaBla").Visible = True
            .Caption = "Button ist " & vbCr & "eingeschaltet"
            .BackColor = RGB(0, 255, 100)
        Else
            Sheets("BlaBla").Visible = False
            .Caption = "Button ist " & vbCr & "ausgeschaltet"
            .BackColor = RGB(255, 0, 0)
        End If
    End With
    
    End Sub
    Nach Sheets("BlaBla") kannst Du x-beliebige Befehlszeilen einfügen... was auch noch gemacht werden soll...

    Was für jeden Fall genau getan werden soll, habe ich sicher nicht recht verstanden.
    Du müsstest ja nur die Befehle entsprechend verschieben...

    Gruss Urs
     
  3. Urs2

    Urs2 Megabyte

    Uebrigens >

    Wenn das Makro schon verschiedene Farben festlegt, brauchst Du gar keinen ToggleButton...
    ...ein ganz gewöhnlicher CommandButton führt zum selben Resultat... und erst noch ohne verwaschene Farben >

    Code:
    Private Sub CommandButton1_Click()
    
    With CommandButton1
        If .BackColor = RGB(255, 0, 0) Then
            Sheets("BlaBla").Visible = True
            .Caption = "Button ist" & vbCr & "ausgeschaltet"
            .BackColor = RGB(0, 255, 0)
        Else
            Sheets("BlaBla").Visible = False
            .Caption = "Button ist" & vbCr & "eingeschaltet"
            .BackColor = RGB(255, 0, 0)
        End If
    End With
    
    End Sub
    
    Gruss Urs
     
  4. Beverly

    Beverly Halbes Megabyte

    Hi Stefan,

    Code:
    Private Sub ToggleButton1_Click()
        ToggleButton1.BackColor = IIf(ToggleButton1, RGB(0, 255, 100), RGB(255, 0, 0))
        ToggleButton1.Caption = IIf(ToggleButton1, "eingeschaltet", "ausgeschaltet")
        Worksheets("Tabelle2").Visible = ToggleButton1 = True
    End Sub
    
     
  5. sTeFaN1989

    sTeFaN1989 Byte

    Alles klaro danke...klappt soweit alles wie gewollt.

    Gruß
     
  6. sTeFaN1989

    sTeFaN1989 Byte

    wie kann ich so eine bedingt Sheetversteckung machen??

    Also:

    Wenn Sheet x vorhanden, dann verstecken, wenn nicht dann nichts machen :)


    Gruß Stefan
     
  7. Urs2

    Urs2 Megabyte

    In meinen zwei Codes ist die Bedingung schon enthalten >
    wenn Button = Rot, dann Sheet verstecken und Button = Grün ... oder umgekehrt (>> ggf. BefehlsZeilen verschieben...)

    Gruss Urs
     
  8. Beverly

    Beverly Halbes Megabyte

    Hi Stefan,

    meinst du so was:

    Code:
    Sub TabelleAusblenden()
        On Error Resume Next
        Worksheets("Tabelle2").Visible = 0
        On Error GoTo 0
    End Sub
    
     
  9. sTeFaN1989

    sTeFaN1989 Byte

    Ja, hab das jetzt so:

    Code:
    Private Sub ToggleButton9_Click()
    
    ToggleButton9.BackColor = IIf(ToggleButton9, RGB(0, 255, 100), RGB(255, 0, 0))
    ToggleButton9.Caption = IIf(ToggleButton9, "aktiv / activ", "inaktiv / inactiv")
    Worksheets("JR Overview").Visible = ToggleButton9 = True
    Worksheets("DJR").Visible = ToggleButton9 = True
    On Error Resume Next
    Worksheets("DJR (1)").Visible = 0
    On Error GoTo 0
    On Error Resume Next
    Worksheets("DJR (2)").Visible = 0
    On Error GoTo 0
    On Error Resume Next
    Worksheets("DJR (3)").Visible = 0
    On Error GoTo 0
    On Error Resume Next
    Worksheets("DJR (4)").Visible = 0
    On Error GoTo 0
    On Error Resume Next
    Worksheets("DJR (5)").Visible = 0
    On Error GoTo 0
    End Sub
    ist doch gut so odeR?
     
  10. Beverly

    Beverly Halbes Megabyte

    Hi Stefan,

    vom Prinzip her ist das richtig, aber es reicht, wenn du On Error Resume Next nur ein mal am Anfang und On Error Goto 0 ein mal am Ende schreibst, denn die Anweisung On Error Goto Next gilt so lange bis sie durch On Error Goto 0 wieder aufgehoben wird:

    Code:
    Private Sub ToggleButton9_Click()
       ToggleButton9.BackColor = IIf(ToggleButton9, RGB(0, 255, 100), RGB(255, 0, 0))
       ToggleButton9.Caption = IIf(ToggleButton9, "aktiv / activ", "inaktiv / inactiv")
       Worksheets("JR Overview").Visible = ToggleButton9 = True
       Worksheets("DJR").Visible = ToggleButton9 = True
       On Error Resume Next
       Worksheets("DJR (1)").Visible = 0
       Worksheets("DJR (2)").Visible = 0
       Worksheets("DJR (3)").Visible = 0
       Worksheets("DJR (4)").Visible = 0
       Worksheets("DJR (5)").Visible = 0
       On Error GoTo 0
    End Sub
    Beachte bitte, dass man generell gesehen On Error Resume Next nur mit Vorsicht und wirklich ganz zielgerichtet einsetzen sollte. Im gegebenen Fall wird der Fehler, der bei Nichtvorhandensein des betreffenden Tabellenblattes ausgelöst würde, einfach ohne Fehlermeldung übergangen und es wird zur nächsten Codezeile gegangen. Am Ende wird diese "Fehlerbehandlung" mit On Error Goto 0 wieder aufgehoben. Eigentlich bräuchte man das in diesem Code nicht machen, denn er ist ja sowieso danach zu Ende, aber man sollte sich angewöhnen, das On Error immer wieder zurück zu setzen, weil andernfalls ein mögilcherweise nachfolgender Code unerwartete und ungewünschte Dinge auslösen könnte.
     
  11. sTeFaN1989

    sTeFaN1989 Byte

    Ok ich hab nun diese '0' wieder mit 'ToggleButton9 = True' wie folgt ersetzt:

    Code:
    Private Sub ToggleButton9_Click()
    
    ToggleButton9.BackColor = IIf(ToggleButton9, RGB(0, 255, 100), RGB(255, 0, 0))
    ToggleButton9.Caption = IIf(ToggleButton9, "aktiv / activ", "inaktiv / inactiv")
    On Error Resume Next
    Worksheets("JR Overview").Visible = ToggleButton9 = True
    Worksheets("DJR").Visible = ToggleButton9 = True
    Worksheets("DJR (1)").Visible = ToggleButton9 = True
    Worksheets("DJR (2)").Visible = ToggleButton9 = True
    Worksheets("DJR (3)").Visible = ToggleButton9 = True
    Worksheets("DJR (4)").Visible = ToggleButton9 = True
    Worksheets("DJR (5)").Visible = ToggleButton9 = True
    On Error GoTo 0
    End Sub
    Mit der Null hatte das wieder sichtbar machen nicht funktioniert. Nun funktioniert alles wie gewollt.

    Danke.

    Gruß
    Stefan
     
Thread Status:
Not open for further replies.

Share This Page