Clever-Excel-Forum

Normale Version: Makro-Button verbergen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich hoffe hier kann mir jemand weiterhelfen, denn ich habe viel gesucht, aber nie so das ganz richtige gefunden, das auch funktioniert.
Irgendwie steh ich nämlich gerade total auf dem Schlauch…


Die Situation ist folgende:

Ich hab einen Button erstellt und hab ihm das Makro zugeteilt:
 
Sub erledigt_2()
 
' erledigt_2 Makro
    Range("H11").Select
    ActiveCell.FormulaR1C1 = "ü"
    Range("H12").Select
End Sub
 
Demnach führt er beim Klick immer aus, dass in Feld "H11" ein "ü" erscheint und er anschließend auf "H12" springt.
 
Nun zum Problem:
 
Ich hätte aber gerne, dass der Button nur angezeigt wird, wenn irgendetwas in dem Feld "F11" steht.
Steht dort allerdings nichts, dann sollte der Button unsichtbar sein, bis man etwas einträgt.

Zur Info: 
Die Excel-Datei hat mehrere Seiten.
 
Was muss ich jetzt aber genau in dem Entwickler-Tool (Visual Basic-Editor) wo eingeben?
Und wie stell ich die Verbindung zu genau dem Button her, den ich ein-/ausblenden möchte.
 
Vielen Dank schon einmal für Eure Hilfe.
Hallo, 

es gibt verschiedene Sorten Buttons. Activex oder Formularsteuerelement 
Die werden auch unterschiedlich angesprochen.
Und ob die sichtbar sind oder nicht  muß  irgendwo  geprüft werden. Und am besten bei einer Änderung des Zellinhaltes. 
Dafür kann man Eventroutinen benutzen. 

Worksheet_Change z.b. wäre da gut. 

Bleibt für mich aber die Frage warum man einen Button benötigt, der nicht anders macht als die normale Excelumgebung schon mitbringt.  


gruß

rb
Zitat:Die Excel-Datei hat mehrere Seiten.



Kann ich nicht bestätigen
Hallo

warum bitte einen Button unsichbar machen über Worksheet_Change? Damit kann man direkt das "ü" in die Zelle eingeben! Ob man anschliessend noch Zelle H12 anspringen muss ist fraglıch? Glaube ich nicht. Dieser Code stammt sicher von einem Makro Recorder!  Unbereinigt!

Diesen Code muss man ins Modul des Tabellenblatt eingeben wo er altiv sein soll. Oder im Modul "ThisWorkbook" für alle Tabellen. Dann aber bitte mit diesem Code:  
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

Andere Frage, wie löschst du die Zelle H11 wieder? Von Hand? Wenn F11 wieder leer ist?

mfg  Gast 123

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub

On Error GoTo Fehler
If Target.Address = "$F$11" Then
   Application.EnableEvents = False
   Range("H11").Value = "ü"
   Range("H11").Select
End If
Fehler:   Application.EnableEvents = False
End Sub
Hallöchen,

Du kannst das auch so programmieren, das ein Doppelklick auf die Zelle reicht. Dann sparst Du Dir den Button. Der Code kommt in das Codemodul vom Tabellenblatt, wo er wirken soll.

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address = "$H$11" Then Target.Value = "ü"
Cancel = True
End Sub
Hallo,

erstmal danke für die Antworten.
Und vielleicht steh ich auch so sehr auf dem Schlauch, dass es eine einfachere Lösung gibt...

Die Erklärung, warum das derzeitige Makro nach dem einfügen des "Ü" auf "H12" weiterspringt, erläutere ich jetzt nicht weiter, weil das einfach zu lange dauern
würde und mit dem eigentlichen Problem nichts zu tun hat.
Dies ist einfach so gewollt und kein "unbereinigtes Makro"

Nur soviel zur Benutzung:

Grundsätzlich ist das eine "Problem-Lösungs-Tabelle", in die viele Menschen Probleme reinschreiben, die sie selbst nicht lösen können bzw. dürfen.
Deshalb gibt es für diese Problemlösungen, eine kleine Gruppe die sich darum kümmert.

Demnach kann zwar jeder von dem eigenen Platz etwas mit der Tastatur reinschreiben, die Lösungen werden aber in der kleinen Gruppe, direkt an einem großen
Touch-Screen-Bildschirm besprochen, eingeteilt und dann gelöst.
Dort ist aber keine Tastatur, denn alle sonstigen Dinge können per Touch-Screen viel schneller und einfacher erledigt werden. (Dazu wird mit anderen Buttons nicht nur
ein "Ü" sondern mehr eingetragen bzw. sogar gleich mehrere Funktionen ausgeführt).

Deshalb werden jetzt eben mehrere Buttons benötigt, die z.B. zeigen:
- An was wird gearbeitet
- Wo gibt es noch ein Problem
- wie ist der aktuelle Stand
- was ist gelöst und abgeschlossen
- ...usw.
(Deshalb geht das mit dem Doppelklick auch nicht)

Somit erkennt sofort jeder Mensch, wer an seinem Problem arbeitet und wie weit es fortgeschritten ist oder wo es noch Probleme gibt.

Dass nun in einer Tabelle mit zig Einträgen, aber die Übersicht gewahrt wird, sollen jetzt nicht direkt neben jeder Zeile die Buttons dargestellt werden.
Diese soll man eben erst sehen, wenn jemand in "F11" etwas eingetragen hat.

Dies könnte ich jetzt noch weiter ausführen, warum nach dem eintragen des "Ü" das nächste Feld angewählt wird oder warum dies per Touch-Screen leichter und schneller
geht wie mit einer Tastatur, aber am Ende habe ich einen Forum-Eintrag für ein Problem erstellt und demnach sollte dort nur das Problem behandelt werden und nicht
das ganze drum herum.

Vielleicht irre ich mich, aber genau deshalb fand ich, dass ich einfach den Butten wähle, der am kürzesten und einfachsten ist, da ich ja nur eine Lösung brauche, die ich dann auf alle Buttons 
anwenden kann.
Wenn es aber gewünscht ist, kann ich gerne alle anderen Buttons incl. der Makros auflisten und was genau wo passiert, doch dies würde alles nur viel unübersichtlicher machen und hätte letztlich mit dem Problem nichts zu tun. 

Am Ende würde ich nur gerne einen Button ausblenden solange nichts in Feld "F11" steht.

Grundsätzlich wusste ich auch, dass dieser Befehl direkt in das Modul, von dem Tabellenblatt, eingetragen werden kann, in dem es aktiv ist, aber eben nicht, wie dieser Befehl genau aussieht bzw. wie ich diesen Befehl einem bestimmten
Button zuweise.
Da ich aber nicht wusste, ob es auch einen Befehl gibt, den man direkt in das Button-Makro einfügen kann, habe ich das Makro des Buttons mit eingefügt.
Einfach falls man innerhalb des Makros etwas ändern müsste, dass man dann direkt am Makro hätte zeigen können, wo und wie das eingefügt werden müsste.

Viele Grüße
Hallo,

versuche es mal so:

Code:
Option Explicit

Private Sub Worksheet_Activate()
    CommandButton1.Visible = False
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    If Len(Range("F11")) > 0 Then CommandButton1.Visible = True
End Sub

Private Sub CommandButton1_Click()
    Range("H11") = "ü"
    Range("H12").Select
End Sub

Auf dem Tabellenblatt legst du eine Schaltfläche aus den ActiveX-Objekten an.
Moin!
Viel Text, aber wir wissen immer noch nicht, welcher Art der Button ist!

Und ohne Wertung und nur am Rande:
Selbstverständlich ist dies unbereinigter Rekorder-Code:
Range("H11").Select
ActiveCell.FormulaR1C1 = "ü"

.FormulaR1C1 ist die falsche Methode, .Select ist überflüssig!
Das geht so:
Range("H11").Value = "ü"

Verrätst Du uns mehr zum Button?

Gruß Ralf
(06.02.2021, 11:01)RPP63 schrieb: [ -> ]Und ohne Wertung und nur am Rande:
Selbstverständlich ist dies unbereinigter Rekorder-Code:
Range("H11").Select
ActiveCell.FormulaR1C1 = "ü"

.FormulaR1C1 ist die falsche Methode, .Select ist überflüssig!
Das geht so:
Range("H11").Value = "ü"

Verrätst Du uns mehr zum Button?

Gruß Ralf

Sorry, falls ich mich falsch ausgedrückt habe.
Da in der Antwort geschrieben wurde, dass es fraglich ist, ob man nach dem einfügen des "ü"  noch auf die Zelle "H12" springen muss, wollte ich dadurch nur ausdrücken, dass dies eben schon gewollt ist.

Die Info über den Button reiche schnellstmöglich nach.

Danke schon mal für Eure Hilfe und die Zeit, die Ihr Euch zum antworten genommen habt.
Hallo Excel-Community,

heute hat es bei mir selbst klick gemacht und so hab ich es alleine und ganz leicht hinbekommen.

Hab es mit dem "invisible" makro gemacht.

Demnach ist mein Problem gelöst.

Dennoch vielen Dank für Eure Hilfe und die schnellen Antworten.
Danke an alle und viele Grüße für Euch