Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Farbpalette in VBA nutzen

Farbpalette in VBA nutzen
04.09.2007 14:52:09
Ralf_P
Hallo zusammen,
eigentlich möchte ich die vorhandene Farbpalette in eine UserForm einbinden und die gewählte Farbe in einer Variablen zur weiterverarbeitung speichern. Hab schon im Archiv gesucht, aber nicht das passende gefunden.
Mann kann sich auch eine Userform mit 40 Commandbuttons selber zurechtbasteln, aber geht das nicht eleganter?
Wenn mann z.B mit
Application.CommandBars("Fill Color").Visible = True
die Farbpalette einblendet, wie kann mann dann den Farbwert speichern, anstatt die gewählte Zelle zu färben?
Vielleicht habt Ihr ja Ideen
Gruß Ralf

Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Farbpalette in VBA nutzen
04.09.2007 15:08:00
Rudi
Hallo,
dafür müsstest du die Funktionalität hinter der Commandbar ändern.
Ich denke nicht, dass das so einfach geht.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Farbpalette in VBA nutzen
04.09.2007 15:16:00
Daniel
Hi
vielleicht könntest du ja folgendermassen vorgehen:
- ne freie Zelle selektieren
- die Commandbar öffen
- der Anwender wählt ne Farbe aus
- du fragst den Farbcode der selektierten Zelle ab und verwendest ihn in deinem Code
Gruß, Daniel

Anzeige
AW: Farbpalette in VBA nutzen
04.09.2007 16:39:00
fcs
Hallo Ralph,
der von Daniel vorgeschlagene Weg allerdings über einen anderen Dialog könnte so aussehen:

Sub Farbauswahl()
Dim test As Variant, colorold As Long, colornew As Long
colorold = ActiveCell.Interior.ColorIndex
test = Application.Dialogs(xlDialogPatterns).Show
If test = False Then
colornew = xlColorIndexNone
colorindexnew = 0
Else
colornew = ActiveCell.Interior.Color
colorindexnew = ActiveCell.Interior.ColorIndex
ActiveCell.Interior.ColorIndex = colorold
End If
MsgBox "Color: " & colornew & " --- ColorIndex: " & colorindexnew
End Sub


Anzeige
AW: Farbpalette in VBA nutzen
04.09.2007 16:13:04
Horst
Hi,
drei Möglichkeiten:
API 'Lösung im Archiv J.Ehrensberger
CommonDialogControl
Selbst basteln.
mfg Horst

AW: Farbpalette in VBA nutzen
04.09.2007 17:04:10
Harry
Hallo,
Mausposition ermitteln und dann Farbe des Pixels
Datei https://www.herber.de/bbs/user/45685.xls
Gruß
Harry

Anzeige
Genau so :-) Danke Euch allen o.T.
04.09.2007 21:38:00
Ralf_P

AW: Farbpalette in VBA nutzen
04.09.2007 21:59:14
Herbert
Hi,
ganz nett aber völliger Schnulli.
mfg Herbert

AW: Farbpalette in VBA nutzen
05.09.2007 10:31:37
Ralf_P
Hallo Herbert,
wieso Schnulli ? Gibt es noch eine andere sinnvolle Variante, außer 40 bzw. 56 CommandButtons zu programmieren, die Farbpalette einzubinden?
So erfüllt es doch genau den Sinn und Zweck, den ich gesucht habe.
Gruß Ralf

Anzeige
AW: Farbpalette in VBA nutzen
05.09.2007 12:44:51
Harry
Hallo Ralf,
Herbert hat schon teilweise recht (insb. wenn dein Level "VBA bescheiden" korrekt ist). Denn zum Weiterentwickeln deiner Fähigkeiten wären die anderen genannten Lösungen sicher besser gewesen.
Habe es hier auch nur gepostet, da die Aufrufe relativ simpel sind und die Flexibilität durch Verwendung unterschieldlicher Bitmaps und damit verschiedener selbstdefinierter Farbpaletten möglich ist.
Gruß
Harry

Anzeige
AW: Farbpalette in VBA nutzen
05.09.2007 20:50:00
Ralf_P
Hallo Harry,
bin schon recht fit in VBA, aber Level "VBA-bescheiden", weil Anweisungen wie
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
nicht gerade zu meinem Standard-Repertoire gehören.
Hast Du evtl. ne Buch-Empfehlung, wo man sich soetwas im Selbststudium beibringen kann?
Habe nur "Bernd Held - VBA Programmierung" (sehr Gut !!) und die Excel-VBA-Hilfe.
Gruß Ralf

Anzeige
AW: Farbpalette in VBA nutzen
05.09.2007 20:55:00
Herbert
"Habe nur "Bernd Held - VBA Programmierung" (sehr Gut !!)"
Armer Kerl, du weißt es halt nicht besser!
mfg Herbert

?
05.09.2007 20:59:00
Ralf_P

AW: Farbpalette in VBA nutzen
05.09.2007 12:49:22
Herbert
Hi,
mein Beutrag war nicht an dich gerichtet.
Wenn du zufrieden bist, ist es ja ok.
Vermutlich hast du die Nachteile dieser statischen Lösung noch nicht entdeckt, kommt sicher noch.
Die API-Lösung von J.Ehrensberger ist kürzer und flexibler.
mfg Herbert
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Farbpalette in VBA nutzen


Schritt-für-Schritt-Anleitung

  1. UserForm erstellen: Öffne den VBA-Editor (ALT + F11) und erstelle eine neue UserForm.
  2. CommandBar einblenden: Füge den Code hinzu, um die CommandBar für die Farbpalette anzuzeigen:
    Application.CommandBars("Fill Color").Visible = True
  3. Farbe auswählen: Der Benutzer wählt eine Farbe aus der geöffneten Farbpalette.
  4. Farbcode speichern: Verwende den folgenden Code, um den Farbwert zu speichern:
    Dim colorValue As Long
    colorValue = ActiveCell.Interior.Color
  5. Farbcode verwenden: Nutze die Variable colorValue für deine weiteren Berechnungen oder zur Anwendung in einer anderen Zelle.

Häufige Fehler und Lösungen

  • Die CommandBar wird nicht angezeigt: Stelle sicher, dass du die richtige CommandBar-Referenz verwendest. Manchmal kann der Name variieren.
  • Farbcode wird nicht gespeichert: Überprüfe, ob die aktive Zelle tatsächlich eine Farbe hat. Der Farbcode muss von einer gefärbten Zelle abgerufen werden.
  • Fehler beim Ausführen des Codes: Achte darauf, dass dein VBA-Level ausreicht, um die API-Funktionen (z.B. GetPixel) zu verwenden.

Alternative Methoden

  • API-Lösungen: Nutze die API-Funktionen, um die Mausposition zu ermitteln und den Farbwert des Pixels an dieser Position zu erhalten. Hier ist ein Beispiel:
    Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
  • CommonDialogControl: Eine weitere Möglichkeit ist die Verwendung des CommonDialogControls, um eine Farbpalette anzuzeigen und die Auswahl zu speichern.

Praktische Beispiele

Hier ist ein Beispiel, das die Verwendung der Farbpalette und das Speichern des Farbwerts zeigt:

Sub Farbauswahl()
    Dim colorValue As Long
    Application.CommandBars("Fill Color").Visible = True
    colorValue = ActiveCell.Interior.Color
    MsgBox "Der ausgewählte Farbcode ist: " & colorValue
End Sub

In diesem Beispiel wird die aktive Zelle gefärbt und der Farbcode in einer Nachricht angezeigt.


Tipps für Profis

  • Farbpalette dynamisch anpassen: Erstelle deine eigene Farbpalette, indem du ActiveCell.Interior.ColorIndex verwendest, um benutzerdefinierte Farben zu speichern und anzuwenden.
  • Optimierung von UserForms: Nutze Steuerelemente wie ComboBoxen oder ListBoxen, um die Farbwahl zu optimieren.
  • VBA-Farbcode-Dokumentation: Halte eine Dokumentation deiner verwendeten Farbcodes bereit, um die Wartung deines Codes zu erleichtern.

FAQ: Häufige Fragen

1. Wie kann ich den Farbcode einer Zelle speichern?
Verwende die Interior.Color-Eigenschaft der Zelle, um den Farbcode zu speichern.

2. Gibt es eine einfachere Möglichkeit, eine Farbpalette zu integrieren?
Ja, die Nutzung von API-Funktionen oder CommonDialogControl kann flexibler und einfacher sein.

3. Wie finde ich den vba farbcode einer bestimmten Farbe?
Du kannst den Farbcode abfragen, indem du die Zelle mit der gewünschten Farbe auswählst und ActiveCell.Interior.Color verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige