Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1272to1276
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

Schaltflächen mit Bedingung ein- bzw. ausblenden

Schaltflächen mit Bedingung ein- bzw. ausblenden
Ralf
Hallo Forum,
ich möchte Schaltflächen mit Bedingungen ein- bzw. ausblenden.
Im konkreten Fall folgendes:
1. Wenn Zelle A8 nicht befüllt ist, soll der Button "einschalten" angezeigt werden und der Button "ausschalten" nicht sichtbar sein.
2. Wenn Zelle A8 mit "Hallo!" befüllt ist, soll der Button "ausschalten" angezeigt werden und der Button "einschalten" nicht sichtbar sein.
Ich habe mal eine Beispielmappe vorbereitet:
https://www.herber.de/bbs/user/81232.xlsm
Kann mir bitte jemand helfen?
Vielen Dank im Voraus für eine Rückmeldung.
Viele Grüße
Ralf
AW: Schaltflächen mit Bedingung ein- bzw. ausblenden
01.08.2012 09:00:11
Thomas
Hallo Ralf,
mit einer Schaltfläche geht das meiner Meinung nach nicht, jedoch mit dem Command Button.
Siehe Datei.
Freundlicher Gruß
Thomas
https://www.herber.de/bbs/user/81233.xlsm
AW: Schaltflächen mit Bedingung ein- bzw. ausblenden
01.08.2012 09:56:40
Beverly
Hi Ralph,
weise beiden Schaltern dieses Makro (im allgemeinen Modul) zu:
Sub EinAus()
With ActiveSheet.Shapes(ActiveSheet.Application.Caller)
If .DrawingObject.Caption = "einschalten" Then
Makro1
.Visible = False
ActiveSheet.Shapes("Schaltfläche 2").Visible = True
Else
Makro2
.Visible = False
ActiveSheet.Shapes("Schaltfläche 1").Visible = True
End If
End With
End Sub

Durch die Verwendung von Application.Caller kann man beiden Steuerelementen das selbe Makro zuweisen und innderhalb des Makros dann verzweigen, je nachdem welcher Schalter gedrückt wurde.
Du kannst natürlich auch anstelle des Aufrufs von Makro1 bzw. Makro2 den Code aus beiden Markos direkt dort eintragen.
Außerdem - man kann in VBA zu 99% auf Select und Activate verzichten. In diesm Fall könnten die Codes der beiden Markos so aussehen:
Sub Makro1()
With Range("A8:B10")
With .Font
.ThemeColor = xlThemeColorLight2
.TintAndShade = 0.399975585192419
.Name = "Arial"
.FontStyle = "Standard"
.Size = 26
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight2
.TintAndShade = 0.399975585192419
.ThemeFont = xlThemeFontNone
End With
With .Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
.Value = "Hallo!"
End With
End Sub
Sub Makro2()
With Range("A8:B10")
With .Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
.ClearContents
End With
End Sub

Da du den Bereich der verknüpften Zellen bereits formatiert hast, muss die Formatierung nicht jedes Mal wieder ausgeführt weden, da du mit .ClearContents nur den Inhalt der Zelle und nicht die Formatierung löschst. Deshalb kannst du die beiden Makros außerdem auf einige wenige Zeilen zusammenstreichen:
Sub Makro1()
With Range("A8:B10")
.Interior.Color = 65535
.Value = "Hallo!"
End With
End Sub
Sub Makro2()
With Range("A8:B10")
.Interior.Pattern = xlNone
.ClearContents
End With
End Sub



Anzeige
AW: Schaltflächen mit Bedingung ein- bzw. ausblenden
01.08.2012 10:25:28
Ralf
Hallo Karin,
Hallo Thomas,
vielen Dank für Euren Beitrag.
Karins Lösung ist natürlich der Hit, vor allem, weil der Code nun übersichtlicher und kürzer ist. Ich habe den Code aufgezeichnet, daher war er so lang.
Jetzt habe ich noch eine andere Frage zu den Schaltflächen: Ich muss die Schaltflächen in meiner Originaldatei ja nun eindeutig nummerieren. Komischerweise kann ich verschiedene Schaltflächen nicht umbenennen und so bleibt eine doppelete Bezeichnung stehen, was bei Ausführung des Codes natürlich zu Problemen führt.
Woran kann das liegen?
Viele Grüße
Ralf
Anzeige
AW: Schaltflächen mit Bedingung ein- bzw. ausblenden
01.08.2012 11:19:15
Beverly
Hi Ralf,
wie meinst du das, du kannst die Schaltflächen nicht umbenennen? Das geht doch bei markierter Schaltfläche im Namensfenster. Wenn du allerdings "Schaltfläche 2" in "Schaltfläche 1" umbenennen willst und es gibt bereits eine "Schaltfläche 1", dann ist das ein Problem. Der einfachste Weg: wähle eine Bezeichnung (z.B. A, B, C oder sonstwie), die noch keine deiner vorhandenen Schaltflächen trägt.
Du kannst allerdings auch einen völlig anderen Weg wählen und nur 1 Schaltfläche für beides verwenden und jeweils nur die Beschriftung ändern. Das kannst du mit dem folgenden Code lösen:
Sub EinAus()
With ActiveSheet.Shapes(ActiveSheet.Application.Caller)
If .DrawingObject.Caption = "einschalten" Then
Makro1
.DrawingObject.Caption = "ausschalten"
Else
Makro2
.DrawingObject.Caption = "einschalten"
End If
End With
End Sub



Anzeige
AW: Schaltflächen mit Bedingung ein- bzw. ausblenden
01.08.2012 12:15:31
Ralf
Hallo Karin,
super Lösung.
Vielen Dank dafür.
Einen schönen sonnigen Tag noch.
Viele Grüße
Ralf
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige