233 Aufrufe
Gefragt in Tabellenkalkulation von jelena Experte (1.1k Punkte)
Bearbeitet von jelena

Guten Tag, ich möchte dieses Makro mit denselben Steuerfeld aus und einschalten.

Sub Makro1()
' Makro1 Makro
    Range("B1:B9").Select
    With Selection.Font
        .ThemeColor = xlThemeColorLight2
        .TintAndShade = 0.799981688894314
    End With
    Range("B1").Select
End Sub

Bei der zweiten Betätigung soll das zweite Makro ausgeführt werden. Danke

Sub Makro2()
' Makro2 Makro
    Range("B1:B9").Select
    With Selection.Font
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
    End With
    Range("B1").Select
End Sub

5 Antworten

0 Punkte
Beantwortet von xlking Experte (1.9k Punkte)
Hallo Jelena,

dazu brauchst du ein Steuerelement dessen Eigenschaften sich verändern und deren Status du dann im Code abfragen kannst. Das kann ein normaler Button sein, dessen Text du z.b. von Ein auf Aus änderst. Oder eine Checkbox deren Häkchen du setzt oder entfernst. Oder ein Togglebutton (auf Deutsch Umschaltfläche), der bei Ein versunken bleibt, und erst beim Ausschalten wieder nach oben kommt. Oder du fragst den Inhalt einer Zelle ab. Der Möglichkeiten gibt es viele.

Bei Checkbox und Togglebutton, lässt sich leicht die Value-Eigenschaft mit auslesen, die True oder False zurückgibt. Beim Text eines normalen Buttons sind es zwei drei Untereigenschaften um den auszulesen. Das bleibt aber dennoch ein Einzeiler. Wofür entscheidest du dich?

Gruß Mr. K.
0 Punkte
Beantwortet von jelena Experte (1.1k Punkte)

Hallo Mr. K. mit dieser Umschaltefläche möchte ich dieses Makro aus und eingeschalten. Danke

0 Punkte
Beantwortet von beverly_ Experte (3.6k Punkte)

Hi Jelena,

falls es sich um Formularsteuerelement oder ein beliebiges anderes Shape handelt, dann folgenden Code in ein Standardmodul:

Sub AusEin()
    With Range("B1:B9").Font
        If .ColorIndex = xlAutomatic Then
            ActiveSheet.Shapes(Application.Caller).DrawingObject.Text = "Aus"
            .ThemeColor = xlThemeColorLight2
            .TintAndShade = 0.799981688894314
        Else
            ActiveSheet.Shapes(Application.Caller).DrawingObject.Text = "Ein"
            .ColorIndex = xlAutomatic
            .TintAndShade = 0
        End If
    End With
End Sub

Anschließend Rechtsklick auf das Shape -> Makro zuweisen... -> Makro "AusEin" auswählen und Ok.

Handelt es sich dagegen um einen ActiveX-CommandButton, dann Entwurfsmodus aktivieren -> Doppelklick auf den CommandButton und folgenden Code im VBA-Editor (im Codemodul des Tabellenblattes) einfügen:

Private Sub CommandButton1_Click()
    With Range("B1:B9").Font
        If .ColorIndex = xlAutomatic Then
            CommandButton1.Caption = "Aus"
            .ThemeColor = xlThemeColorLight2
            .TintAndShade = 0.799981688894314
        Else
            CommandButton1.Caption = "Ein"
            .ColorIndex = xlAutomatic
            .TintAndShade = 0
        End If
    End With
End Sub

Den Namen das Steuerelementes - hier CommandButton1 - musst du natürlich entsprechend anpassen.

Bis später, Karin

0 Punkte
Beantwortet von jelena Experte (1.1k Punkte)
Hallo Karin, vielen Dank und Frohe Ostern.
0 Punkte
Beantwortet von xlking Experte (1.9k Punkte)

Hi Jelena,

Karin hat dir das Beispiel für einen normalen Button gezeigt. Im Falle einer Umschaltfläche müsste der Code wie folgt aussehen:

Private Sub ToggleButton1_Click()
  With Range("B1:B9").Font
    If ToggleButton1.Value = True Then
      ToggleButton1.Caption = "Ausschalten"
      .ThemeColor = xlThemeColorLight2
      .TintAndShade = 0.799981688894314
    Else
      ToggleButton1.Caption = "Einschalten"
      .ColorIndex = xlAutomatic
      .TintAndShade = 0
    End If
  End With
End Sub

Der Name "ToggleButton1" muss ggf. an den Namen deiner Umschaltfläche angepasst werden.

Gruß Mr. K.

...