Moin!
Jetzt wollte ich heute Morgen einen Code für ein Kontextmenue schreiben und sehe, dass Uwe viel schneller war …
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:
A
B
1
Farbkonstante
Wert
2
vbBlack
0
3
vbRed
255
4
vbGreen
65.280
5
vbYellow
65.535
6
vbBlue
16.711.680
7
vbMagenta
16.711.935
8
xlNone
-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
EndIfEndSub
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:1 Nutzer sagt Danke an RPP63 für diesen Beitrag 28 • Elex
07.07.2018, 09:28 (Dieser Beitrag wurde zuletzt bearbeitet: 07.07.2018, 09:28 von RPP63.)
(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)
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
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
07.07.2018, 14:32 (Dieser Beitrag wurde zuletzt bearbeitet: 07.07.2018, 14:32 von RPP63.)
(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)
07.07.2018, 18:17 (Dieser Beitrag wurde zuletzt bearbeitet: 07.07.2018, 18:17 von Kuwer.)
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, ...)
' **************************************************************
08.07.2018, 05:57 (Dieser Beitrag wurde zuletzt bearbeitet: 08.07.2018, 05:57 von RPP63.)
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)
08.07.2018, 06:48 (Dieser Beitrag wurde zuletzt bearbeitet: 08.07.2018, 06:48 von RPP63.)
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):
A
B
C
1
Farbkonstante
bzw. Farbe
Wert
FaceID
2
vbBlack
0
3
vbRed
255
6850
4
vbGreen
65.280
6852
5
vbYellow
65.535
6859
6
vbBlue
16.711.680
6851
7
vbMagenta
16.711.935
6857
8
xlNone
-4.142
6849
9
Zyan
16.776.960
6855
10
Grey
14.277.081
6853
11
Orange
42.495
6854
12
dark Green
25.600
6858
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)
08.07.2018, 12:45 (Dieser Beitrag wurde zuletzt bearbeitet: 08.07.2018, 12:45 von schauan.)
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
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)