Schaltfläche sichtbar wenn Wert in Zelle erreicht

.. das wohl mächtigste Werkzeug in Bill Gates' Büro-Sippe. Ob reine Formeln, PowerQuery oder VBA. Hier bleiben kaum Wünsche unerfüllt.
Benutzeravatar
Nanu
Beiträge: 62
Registriert: 14. Okt 2023, 20:20
Hat sich bedankt: 34 Mal
Danksagung erhalten: 14 Mal
Kontaktdaten:

Schaltfläche sichtbar wenn Wert in Zelle erreicht

#1

Beitrag von Nanu »

Hola ins Forum,
ich schon wieder. Hoffentlich werde ich nicht nervig. :lol: :lol:
Eine kurze Frage.
Kann man die Schaltfläche die ich aus den Formularsteuerelementen in die Excel Tabelle einfügen kann sichtbar/unsichtbar machen?
Ich würde die Schaltfläche gerne unsichtbar haben, bei mir heißt sie "Button 5", bis der vorgegebene Wert in Zelle AB20, bei mir 5, erreicht ist.
Solange der Wert kleiner ist bleibt die Schaltfläche verborgen/nicht sichtbar.
Muchas gracias an alle.
Saludos
Benutzeravatar
d'r Bastler
Beiträge: 683
Registriert: 29. Aug 2022, 13:20
Hat sich bedankt: 177 Mal
Danksagung erhalten: 91 Mal

Re: Schaltfläche sichtbar wenn Wert in Zelle erreicht

#2

Beitrag von d'r Bastler »

Moin Nanu,
lustige Idee! wobei ich mit den EinzelControls aus den Entwicklerwerkzeugen kaum Erfahrung habe.

Was sicher geht ist, die Zelle erst ab einem definierten Wert den Doppelklick-Event abfangen zu lassen, der dann das Makro auslöst, das hinter Deiner Schaltfläche steckt.

Code: Alles auswählen

Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Cancel = True
If Target.Row = 20 And Target.Column = 28 And Target.Value > 4 Then
    MsgBox "!"  'hier Dein Makro
End If
End Sub
Alternativ ließe sich auch per Selection_Change eines Userform it einem Button aufrufen. Da müsstes Du zwei Zeilen ändern:

Code: Alles auswählen

Zeile 1: Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Zeile 5: Userform1.Show
Grüße
Folgende Benutzer bedankten sich beim Autor d'r Bastler für den Beitrag:
Nanu
d'r Bastler von den VBAsteleien.de
Win 10 + Office 2019 & Win11 + Office 2021 + Visio 2019 pro & macOS.X15 + Office2019pro & Android12 & XL365
Benutzeravatar
d'r Bastler
Beiträge: 683
Registriert: 29. Aug 2022, 13:20
Hat sich bedankt: 177 Mal
Danksagung erhalten: 91 Mal

Re: Schaltfläche sichtbar wenn Wert in Zelle erreicht

#3

Beitrag von d'r Bastler »

und jetzt noch ein getesteter Nachtrag:
Du baust eine Userform1 mit einem CommandButton1, der folgenden Code erhält:

Code: Alles auswählen

Option Explicit
Private Sub CommandButton1_Click()
Me.Hide					'blendet die USF wieder aus
MsgBox "!" 				'hier Dein Makro
End Sub
Den Code im Sheet musst an Deine Anforderung anpassen:

Code: Alles auswählen

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 20 And Target.Column = 28 And Target.Value > 4 Then	'prüft Zelladresse und Wert
    UserForm1.Show										'zeigt die USF
End If
End Sub
Soll das Makro nur ausgeführt werden, wenn der Wert genau 5 ist, ersetzt Du > 4 durch = 5. Im Moment reagiert er auf jede Änderung ab dem Wert 5.
Saludos
Folgende Benutzer bedankten sich beim Autor d'r Bastler für den Beitrag:
Nanu
d'r Bastler von den VBAsteleien.de
Win 10 + Office 2019 & Win11 + Office 2021 + Visio 2019 pro & macOS.X15 + Office2019pro & Android12 & XL365
Paul1206
Beiträge: 11
Registriert: 29. Aug 2022, 20:22
Hat sich bedankt: 2 Mal
Danksagung erhalten: 10 Mal

Re: Schaltfläche sichtbar wenn Wert in Zelle erreicht

#4

Beitrag von Paul1206 »

Hallo Nanu,

eine Schaltfläche (Formularsteuerelment CommandButton). kann man nicht .Visible = True/False stellen.
Aber man kann, wenn der Zielwert erreicht ist, einen Button mit der Methode .Add erzeugen und den Namen bzw. aussehen, Buttontext sowie Makroverknüpfung mitgeben.
Ein Beispiel für neuen Button mit Name, Buttontext und Verknüpfung mit Makro:

Code: Alles auswählen

Option Explicit

Sub AusgbeMsgBox()
    MsgBox "erfolgreich gedrückt"
End Sub

Sub NeuerCmdFstE()
    Dim objBtn As Object
    Set objBtn = Tabelle1.Buttons.Add(100, 21, 82.5, 23.25)
    With objBtn
        .Name = "Ziel"
        .OnAction = "AusgbeMsgBox"
        .Characters.Text = "drück mich"
    End With
End Sub
Gruß Uwe
Folgende Benutzer bedankten sich beim Autor Paul1206 für den Beitrag:
Nanu
Paul1206
Beiträge: 11
Registriert: 29. Aug 2022, 20:22
Hat sich bedankt: 2 Mal
Danksagung erhalten: 10 Mal

Re: Schaltfläche sichtbar wenn Wert in Zelle erreicht

#5

Beitrag von Paul1206 »

noch was vergessen. Falls der Button wieder verschwinden soll, weil Wert nicht mehr vorhanden ist hilft dies:

Code: Alles auswählen

Sub deleteCmdFstE()
    Dim objBtn As Button
    For Each objBtn In Tabelle1.Buttons
        If InStr(1, objBtn.Name, "Ziel", vbTextCompare) > 0 Then
            objBtn.Delete
        End If
    Next
End Sub
Gruß Uwe
Folgende Benutzer bedankten sich beim Autor Paul1206 für den Beitrag (Insgesamt 2):
d'r Bastler, Nanu
Benutzeravatar
thowe
Beiträge: 209
Registriert: 12. Sep 2022, 16:57
Hat sich bedankt: 79 Mal
Danksagung erhalten: 67 Mal
Kontaktdaten:

Re: Schaltfläche sichtbar wenn Wert in Zelle erreicht

#6

Beitrag von thowe »

Hallo Paul

versuch' mal

Code: Alles auswählen


Sub TESTToggleVissibilityShape()

    Dim btnTargeted As Shape 'Variable: The existing CommandButton as Shape (Formularsteuerelement)
    
    'btnOne ist the Name of the only exisiting Shape (=CommandButton) in this Worksheet
    Set btnTargeted = ActiveSheet.Shapes("btnThis")
    Debug.Print btnTargeted.Name
    'Set some Properties, except the Capiton
    'As it is a Shape, there can't be a Caption
    'otherwise declare it as OLEObject
    With btnTargeted
        .Visible = False
    End With

    If ActiveSheet.Cells(1, 1).Value = "something" Then 'change it
        'Do some stuff here
        'ie display the Shape or change the Name or change the Cpation
    End If
    
    'unset, reset, delete
    btnTargeted.Visible = True 'delete/change it in Stage: Production
    Set btnTargeted = Nothing
    
End Sub
Folgende Benutzer bedankten sich beim Autor thowe für den Beitrag (Insgesamt 3):
d'r Bastler, Paul1206, Nanu
Benutzeravatar
Nanu
Beiträge: 62
Registriert: 14. Okt 2023, 20:20
Hat sich bedankt: 34 Mal
Danksagung erhalten: 14 Mal
Kontaktdaten:

Re: Schaltfläche sichtbar wenn Wert in Zelle erreicht

#7

Beitrag von Nanu »

Vorweg erstmal muchas gracias für das rege Interesse und die wie immer tolle Hilfe hier. Ich werde am Wochenende mal alles ausprobieren und dann Rückmeldung geben ob und welches für mich gepasst hat. Nur mal kurz zur Erklärung was ich eigentlich damit bezwecken will.
Ich erstelle gerade einen Montageplan für unsere Setzgeräte (Klammern). Ich möchte gerne unseren Monteuren einen Plan an die Hand geben wie und in welcher Reihenfolge die Geräte montiert werden. Das bedeutet.
  • Sie wählen das Gerät aus
  • Dadurch wird der erste Sheet eingeblendet und wenn die 5 "neuen Kontrollkästchen (unter EINFÜGEN)" aktiviert sind, erst dann wird der Button zum weitergehen sichtbar. Damit gehen sie dann zu Schritt 2 und der erste Schritt wird ausgeblendet
usw.
Das bekomme ich soweit ja mit dem Makrorekorder hin. Was mir fehlt, oder gefehlt hat, war das sichtbar/unsichtbar des Buttons machen
Muchas garcias a todos
Nanu
Ps.: Wenn es jemanden interessiert
TecnoMetales
Paul1206
Beiträge: 11
Registriert: 29. Aug 2022, 20:22
Hat sich bedankt: 2 Mal
Danksagung erhalten: 10 Mal

Re: Schaltfläche sichtbar wenn Wert in Zelle erreicht

#8

Beitrag von Paul1206 »

Hallo thowe,

Asche auf mein Haupt. Klar geht es auch objBtn As Button und nicht nur übers Shape.
War wohl heut Vormittag beim Zaunstreichen zu lang in der Sonne.

Gruß Uwe
Benutzeravatar
d'r Bastler
Beiträge: 683
Registriert: 29. Aug 2022, 13:20
Hat sich bedankt: 177 Mal
Danksagung erhalten: 91 Mal

Re: Schaltfläche sichtbar wenn Wert in Zelle erreicht

#9

Beitrag von d'r Bastler »

Moin Uwe,
erst Grillparty, dann Zaunstreichen ... du machst Sachen! :o Jetzt aber schnell Haarewaschen! Denn Asche auf dem Haupt absorbiert Hitze mehr als graue Haare :D
lg
d'r Bastler von den VBAsteleien.de
Win 10 + Office 2019 & Win11 + Office 2021 + Visio 2019 pro & macOS.X15 + Office2019pro & Android12 & XL365
xlKing
Beiträge: 37
Registriert: 30. Mai 2024, 19:42
Hat sich bedankt: 2 Mal
Danksagung erhalten: 35 Mal
Kontaktdaten:

Re: Schaltfläche sichtbar wenn Wert in Zelle erreicht

#10

Beitrag von xlKing »

Hallo zusammen,

ich würde das trotzdem ganz simpel über das Shape machen. Da ist es egal, ob es sich um ein Formularsteuerelement oder ein ActiveX-Steuerelement handelt. Der Shape-Container funktioniert mit beidem. Die Frage ist vielmehr, wie denn der Wert 5 in AB20 erreicht wird. Über eine manuelle Eingabe oder über eine Formel?
Bei manueller Eingabe käme dieser Code ins entsprechende Tabellenmodul.

Code: Alles auswählen

Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Range("AB20")) Is Nothing Then
  If Range("AB20") < 5 Then
    Me.Shapes("Button 5").Visible = False
  Else
    Me.Shapes("Button 5").Visible = True
  End If
 End If
End Sub
Bei Formelberechnung müsstest du den Code entsprechend ins Calculate-Ereignis schreiben. Ist ungünstiger, weil der Code dann bei jeder Neuberechnung des Arbeitsblattes ausgeführt wird, was zu Verzögerungen im Arbeitsablauf führen kann.

Gruß Mr. K.
Folgende Benutzer bedankten sich beim Autor xlKing für den Beitrag (Insgesamt 3):
Nanu, thowe, d'r Bastler
Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste