Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Dropdown für Hintergrundfarbe
#21
Moin!
Jetzt wollte ich heute Morgen einen Code für ein Kontextmenue schreiben und sehe, dass Uwe viel schneller war … Wink
Nevertheless und nur ergänzend:
Ich würde nicht den .ColorIndex nehmen, da dieser auf unterschiedlichen Rechnern durchaus andere Farben erzeugen kann.
(gewollt oder ungewollt)

Statt dessen würde ich der Interior.Color-Eigenschaft eine der folgenden Farbkonstanten zuweisen, dann bist Du auf der sicheren Seite:

AB
1FarbkonstanteWert
2vbBlack0
3vbRed255
4vbGreen65.280
5vbYellow65.535
6vbBlue16.711.680
7vbMagenta16.711.935
8xlNone-4.142

Wenn man jetzt noch den Typ der Auswahl überprüft, kann man ohne Fehlermeldung die Selection einfärben.
Für rot würde ich es so machen:

Sub Hintergrundfarbe_setzen_Rot()
If TypeName(Selection) = "Range" Then
  Selection.Interior.Color = vbRed
End If
End Sub

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • Elex
Antworten Top
#22
(06.07.2018, 14:07)Klaus-Dieter schrieb: Es ist absolut unprofessionell Auswertungen nach Zellformaten vorzunehmen.

Moin Klaus-Dieter!
So absolut, wie Du das siehst, finde ich es nicht.
Warum sonst sollte Excel seit längerem das Filtern nach Farbe anbieten?
Dies iVm TEILERGEBNIS(3;…) (weil ja ein Text  in der auszuwertenden Zelle steht) bietet durchaus eine zusätzliche komfortable Auswertung.
Voraussetzung ist jedoch, dass die Farben nicht ähnlich, sondern identisch sein müssen.
Und genau darum geht es hier in diesem Thread …

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#23
Hallo Ralf,

Zitat:Warum sonst sollte Excel seit längerem das Filtern nach Farbe anbieten?

nicht alles, was Excel anbietet, ist auch sinnvoll. Da fallen mir spontan die verbundenen Zellen außerhalb von Überschriften ein. 

Was die Auswertung nach Zellformaten betrifft, hast du ja selbst durch deinen Hinweis auf das Vermeiden von ColorIndex auf Unzulänglichkeiten hingewiesen. Ich für mein Teil bevorzuge Statusmeldungen, nach denen man hervorragend, und vor allem zweifelsfrei auswerten kann.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#24
Hallo Uwe und Ralf,
 
wie ich finde eine interessante Lösung. Kannte ich noch nicht und habe mich etwas belesen dazu. 
 
CommandBars.Add
 
Zu diesem Parameter  --  MenuBar  --  finden sich leider unterschiedliche Erklärungen.
 
1. True, wenn die aktive Menüleiste durch die neue Befehlsleiste ersetzt werden soll. Der Standardwert ist False.
 
2. optional, legt fest, ob es sich um eine Menü- oder eine Symbolleiste handelt (TRUE = Menüleiste, FALSE = Symbolleiste, Voreinstellung ist FALSE).
 
Was ist hier nun zutreffend?
 
 
Ob eine Lösung mit CommandBars etwas für den einfachen Excelanwender ist wäre zu überlegen. Weil wenn man sich damit mit nicht wirklich auskennt, kann man sich durchaus die Excelmenüs erst mal verunstalten.
 
Eine alternative mit einer Listbox.

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  ListBox1.Left = ActiveCell.Left
  ListBox1.Top = ActiveCell.Top
  ListBox1.Clear
  ListBox1.AddItem ("Rot")
  ListBox1.AddItem ("Gelb")
  ListBox1.AddItem ("Grün")
  ListBox1.AddItem ("Keine")
  ListBox1.Visible = True
  Cancel = True
End Sub

Private Sub ListBox1_Click()
Select Case ListBox1.Text
  Case "Rot"
    ActiveCell.Interior.Color = vbRed
  Case "Gelb"
    ActiveCell.Interior.Color = vbYellow
  Case "Grün"
    ActiveCell.Interior.Color = vbGreen
  Case "Keine"
    ActiveCell.Interior.Color = xlNone
End Select
ListBox1.Visible = False
End Sub

Gruß Elex
Antworten Top
#25
(07.07.2018, 14:06)Elex schrieb: Ob eine Lösung mit CommandBars etwas für den einfachen Excelanwender ist wäre zu überlegen. Weil wenn man sich damit mit nicht wirklich auskennt, kann man sich durchaus die Excelmenüs erst mal verunstalten.
Moin!
Dafür gibt es ja die Parameter der CommandBars.Add-Methode (Office)
Für das Kontextmenue ist die MsoBarPosition entscheidend.
Statt Position:=5 kann man sich auch der Konstanten msoBarPopup bedienen.
MenuBar bleibt auf dem Default False
Temporary:=True hilft bei unerwarteten Fehlern!

Der Anwender bekommt davon ja erst mal nichts mit, wenn man das Target vernünftig auswertet.
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#26
Hi Ralf,

(07.07.2018, 09:01)RPP63 schrieb: Statt dessen würde ich der Interior.Color-Eigenschaft eine der folgenden Farbkonstanten zuweisen, dann bist Du auf der
Gute Idee.

(07.07.2018, 09:01)RPP63 schrieb: Wenn man jetzt noch den Typ der Auswahl überprüft, kann man ohne Fehlermeldung die Selection einfärben.
Das ist nicht unbedingt nötig, da das Makro nicht anders aufrufbar ist.


Ich habe das Ganze noch etwas aufgehübscht und vereinfacht:


' **************************************************************
' Modul: Tabelle3 Typ = Element der Mappe(Sheet, Workbook, ...)
' **************************************************************


Option Explicit

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True 'verhindert die Anzeige des normalen Kontextmenüs
With Application.CommandBars.Add("MeineFarben", msoBarPopup, , True)
'1. Untereintrag
With .Controls.Add(msoControlButton)
.FaceId = 6850
.Caption = "Rot"
.Parameter = vbRed
.OnAction = "Hintergrundfarbe_setzen"
End With
'2. Untereintrag
With .Controls.Add(msoControlButton)
.FaceId = 6859
.Caption = "Gelb"
.Parameter = vbYellow
.OnAction = "Hintergrundfarbe_setzen"
End With
'3. Untereintrag
With .Controls.Add(msoControlButton)
.FaceId = 6852
.Caption = "Grün"
.Parameter = vbGreen
.OnAction = "Hintergrundfarbe_setzen"
End With
'4. Untereintrag
With .Controls.Add(msoControlButton)
.FaceId = 6849
.Caption = "Farblos"
.Parameter = -4142
.OnAction = "Hintergrundfarbe_setzen"
End With
.ShowPopup
.Delete
End With
End Sub


' **************************************************************
' Modul: Modul1 Typ = Allgemeines Modul
' **************************************************************


Option Explicit
Option Private Module

Sub Hintergrundfarbe_setzen()
Selection.Interior.Color = Application.CommandBars.ActionControl.Parameter
End Sub

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • RPP63
Antworten Top
#27
Thumps_up
Super!
Wo hast Du die FaceIDs her, Uwe?
Ich habe mir einen Wolf gesucht!
(und bin nur bis 5685 fündig geworden)
http://supportingtech.blogspot.com/2011/...r-vba.html
Da bis dort keine simplen Farben vorhanden waren, hatte ich aufgegeben.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#28
Bin doch noch fündig geworden.
In meinem Archiv hatte ich noch etwas vom Farb-Guru Gandalf.
Hier mal die Liste aller Fundstellen (wenn ohne VB-Farbkonstante, muss man im Code die Farbnummer aus Spalte B nehmen):

ABC
1Farbkonstante
bzw. Farbe
WertFaceID
2vbBlack0
3vbRed2556850
4vbGreen65.2806852
5vbYellow65.5356859
6vbBlue16.711.6806851
7vbMagenta16.711.9356857
8xlNone-4.1426849
9Zyan16.776.9606855
10Grey14.277.0816853
11Orange42.4956854
12dark Green25.6006858
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#29
Hallöchen,

ich habe hier auch mal eine Variante. Das Zellmenü wird unten um eine Farbauswahl erweitert. Die Auswahl kommt nur in der Datei. Siehe dazu auch meine Ribbon-Einführung im Workshop.
http://www.clever-excel-forum.de/Thread-...ons-Teil-1

Für alle die keine xlsm laden auch als xlsx mit dem Code in Tabelle1 und hier. Die CustomUI ist in beiden Varianten identisch und nicht vom Entfernen von Code beim Speichern als xlsx betroffen.

Code:
Public Sub Farbmacro(control As IRibbonControl)
Select Case control.ID
  Case "Btn1Red": Selection.Interior.Color = vbRed
  Case "Btn2Yel": Selection.Interior.Color = vbYellow
  Case "Btn3Gre": Selection.Interior.Color = vbGreen
End Select
End Sub


Angehängte Dateien
.xlsm   FarbWahl.xlsm (Größe: 15,17 KB / Downloads: 4)
.xlsx   FarbWahl.xlsx (Größe: 10,22 KB / Downloads: 3)
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#30
Hallo Uwe,

deine aufgehübschte Version packe ich mir einfach in ein Modul, speicher die Datei ab und kann es jetzt wie genau nutzen?
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste