Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1368to1372
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

Commandbutton.Backcolor laden

Commandbutton.Backcolor laden
10.07.2014 16:59:39
Robert

Hallo zusammen,
In meinem Arbeitsblatt habe ich einen Commandbutton, der je nachdem, wie ein Flag gesetzt ist eine Hintergrundfarbe bekommt, um zu visualisieren, ob ein Setting grade an oder ausgeschaltet ist.
Das funktioniert wunderbar, solange der Commandbutton selbst der Auslöser ist. Die Farbe kann mit Commandbutton.Backcolor gesetzt werden.
Leider wird die Farbe des Commandbuttons nicht gespeichert.
Ich bräuchte eine Methode, die Hintergrundfarbe des Commandbuttons beim Öffnen zu setzen und upzudaten, ohne den Commandbutton auszuwählen.
Integrieren von Commandbutton.Backcolor in die workbook_open routine brachte nicht das gewünschte Ergebnis, der button blieb grau, bis man ihn eben anwählt.
Viele Grüße
Robert

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Commandbutton.Backcolor laden
10.07.2014 17:03:01
EtoPHG
Hallo Robert,
Schreib den Zustand (z.B. den Wert der BackColor-Eigenschaft) in eine Zelle des Blatts, die du verstecken kannst. Dann kannst du die Farbe einfach gem. dem Inhalt dieser Zelle im Workbook_Open dem Control zuweisen.
Gruess Hansueli

AW: Commandbutton.Backcolor laden
11.07.2014 08:02:29
Robert
Hallo Hansueli,
Folgendes habe ich probiert:
Tabelle1.CommandButton1.BackColor = Tabelle1.Cells(1,14)
spuckt mir "Typen unverträglich" aus mit
?tabelle1.Cells(1,14)
RGB(255, 255, 0)
Beim Klicken des Commandbuttons selbst passiert bisher das:
If ThisWorkbook.CustomDocumentProperties("mrk") Then
ThisWorkbook.CustomDocumentProperties("mrk") = False
Tabelle1.Unprotect Password:="zugang"
Tabelle1.CommandButton1.BackColor = RGB(255, 0, 0)
Tabelle1.CommandButton1.Caption = "OFF"
Tabelle1.Protect Password:="zugang", AllowFiltering:=True
Else
ThisWorkbook.CustomDocumentProperties("mrk") = True
Tabelle1.Unprotect Password:="zugang"
Tabelle1.CommandButton1.BackColor = RGB(255, 255, 0)
Tabelle1.CommandButton1.Caption = "ON"
Tabelle1.Protect Password:="zugang", AllowFiltering:=True
End If
Beim klicken des Buttons funktioniert der Farbewechsel hervorragend.
Wenn ich die selbe Routine z.B. bei Workbook_open ausführe klappt es nicht, der Button bleibt grau.
Ich steh aufm schlauch.

Anzeige
AW: Commandbutton.Backcolor laden
11.07.2014 08:38:59
EtoPHG
Hallo Robert,
Ich versteh, was deine Codeschnipsel machen, sehe aber nicht wann/wo/wie sie ausgeführt werden.
Wenn du schon eine CustomDocumentProperty hast, die den Zustand des Button festhält, dann brauchst du auch keine Zelle um die Farbe abzuspeichern, sondern kannst diese benutzen. Ich seh aber nicht, wo/wann diese Eigenschaft ihren Zustand ändert. Also, wenn du mit meinen Angaben nicht zurecht kommst, dann bitte die ganzen Codeteile posten, welche das Problem betreffen. Wichtig dabei auch: In welcher Klasse (DieseArbeitsmappe, Tabelle, Modul, Userform) befinden sich die Codeteile?
Gruess Hansueli

Anzeige
AW: Commandbutton.Backcolor laden
11.07.2014 08:57:49
Robert
Hallo Hansueli,
genau, CustomProperty sollte eigentlich das gleiche bewirken wie die Zelle.
Ich hab den Punkt, an dem sich die Property ändert nochmal hervorgehoben.
Funktioniert aber leider nicht, deswegen habe ich es nach deinem Kommentar nochmal mit der Zelle probiert.
Momentaner Stand (der beim Klicken des Buttons auch funktioniert):
In "DieseArbeitsmappe":
Private Sub SetMarking
If ThisWorkbook.CustomDocumentProperties("mrk") Then
ThisWorkbook.CustomDocumentProperties("mrk") = False
Tabelle1.Unprotect Password:="zugang"
Tabelle1.CommandButton1.BackColor = RGB(255, 0, 0)
Tabelle1.CommandButton1.Caption = "OFF"
Tabelle1.Protect Password:="zugang", AllowFiltering:=True
Else
ThisWorkbook.CustomDocumentProperties("mrk") = True
Tabelle1.Unprotect Password:="zugang"
Tabelle1.CommandButton1.BackColor = RGB(255, 255, 0)
Tabelle1.CommandButton1.Caption = "ON"
Tabelle1.Protect Password:="zugang", AllowFiltering:=True
End If
End Sub

Und in Tabelle1:
Private Sub CommandButton1_Click()
Application.Run ("DieseArbeitsmappe.SetMarking")
End Sub
Der Springende Punkt ist, der Commandbutton sollte ja, je nach Stand der Property, entweder Rot oder Geld sein.
Beim Öffnen der Arbeitsmappe bleibt der Button aber grau bis er zum ersten mal geklickt wird, selbst wenn er beim schließen (und speichern) eine Farbe hatte.

Anzeige
AW: Der älteste Trick im Buch
11.07.2014 09:37:03
Robert
Hallo Hansueli,
Ich habe aus lauter Verzweiflung den IT Tipp Nr.1 probiert "Have you tried switching it off an on again?"
Was soll ich sagen?
Ich habe den Commandbutton gelöscht, und an derselben Stelle einen Commandbutton wieder eingefügt (mit der gleichen Bezeichnung) und der Code rennt.
Vermutlich war irgendwas mit den Eigenschaften des Commandbuttons vermurkst.
Vielen Dank für deine Hilfe und Geduld!

Ohne Zelle und DocumentProperty...
11.07.2014 10:03:28
EtoPHG
lässt sich das Ganze viel einfacher realisieren, Robert
Nämlich so:
' Code in DieserArbeitsmappe
Option Explicit
Private Sub Workbook_Open()
Tabelle1.CommandButton1_Click
Tabelle1.CommandButton1_Click
End Sub

und
' Code in Tabelle1 (mit dem CommandButton1)
Option Explicit
Sub CommandButton1_Click()
Unprotect Password:="zugang"
With CommandButton1
If .Caption = "ON" Then
.BackColor = RGB(255, 0, 0)
.Caption = "OFF"
Else
.BackColor = RGB(255, 255, 0)
.Caption = "ON"
End If
End With
Protect Password:="zugang", AllowFiltering:=True
End Sub
Gruess Hansueli

Anzeige
AW: Ohne Zelle und DocumentProperty...
11.07.2014 10:43:32
Robert
Hallo nochmal,
Auf die Idee, das ganze zweimal klicken zu lassen und damit das zu umgehen bin ich gar nicht gekommen.
Die Property brauche ich allerdings trotzdem, da ich auf diese oft zurückgreife und nicht den Code auf eine Prüfung der Commandbutton.Caption umschreiben will.
Was du nicht wissen kannst:
Beim Clicken des Buttons wird zudem noch abgefragt, ob der Nutzer eingeloggt ist und nur bei eingeloggtem User das Flag geändert. Andere User bekommen eine Meldung, dass die Funktion nur eingeloggten Nutzern zur Verfügung steht.
Somit kann ich das mit dem zweimal klicken nicht machen, ansonsten würde zweimal diese Meldung aufpoppen (man ist Standardmäßig ausgeloggt beim öffnen der Mappe). Kann man zwar auch unterdrücken, aber dann bin ich wieder nicht bei "einfacher" :)
Der Grund, warum die Setmarking Sub in DieseArbeitsmappe und nicht im Commmandbutton_Click Event steht ist, dass ich generell alle Funktionen da rein packe, um alles an einem Fleck zu haben und mit den Dropdown schnell meine Funktionen zu finden.
Gruß
Robert

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige