Hola ins Forum,
ich schon wieder. Hoffentlich werde ich nicht nervig.
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
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.
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:
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:
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:
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:
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):
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):
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
Moin Uwe,
erst Grillparty, dann Zaunstreichen ... du machst Sachen! Jetzt aber schnell Haarewaschen! Denn Asche auf dem Haupt absorbiert Hitze mehr als graue Haare
lg
d'r Bastler von den VBAsteleien.de Win 10 + Office 2019 & Win11 + Office 2021 + Visio 2019 pro & macOS.X15 + Office2019pro & Android12 & XL365
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.
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):