Michał W.

Michał W. Analityk biznesowy/
analityk danych

Temat: Paleta kolorów - VBA

Pytanie:
Czy da się w jakiś sposób przy użyciu VBA wywołać wbudowaną w Excel-a paletę kolorów, tak, żeby wykorzystać ją do własnego UserForm-a. Do tej pory używałem 3 pól do wpisania RGB, ale to jest mało intuicyjne.
Oskar Shon

Oskar Shon Dodatki do Office
www.VBATools.pl

Temat: Paleta kolorów - VBA

Tak. Choć jest kilka okien zawierających kolory, ale potem jest problem aby go obsłużyć bo zawiera wszystkie elementy wraz z niestandardowymi. Prościej jest np narysować sobie paletę z przyciskami 8*7=56, a potem przenieść zaznaczony kolor. Np tutaj stosuje taki model z kolorami: http://vbatools.pl/zaznacz-roznice/

No możesz też chcesz zmieniać kolory jedynie fontów, a w tedy standardowy dialog może być lepszy:
Dim dlg As Dialog
Set dlg = Application.Dialogs(xlDialogFontProperties)
Michał W.

Michał W. Analityk biznesowy/
analityk danych

Temat: Paleta kolorów - VBA

Bardzo dziękuję za odpowiedź. Twój przykład zainspirował mnie do zrobienia UserForm-a dającego możliwość wyboru koloru w podobny sposób jak dla kolorów niestandardowych. Generalnie cała koncepcja opiera się na obrazie palety barw wstawionej jako Image na UserForm-ie. A określenie wybranego koloru wynika ze współrzędnych kursora na obrazie. Projekt jest jeszcze "w powijakach" z braku czasu, ale zaczyna to wyglądać obiecująco. Zastanawiam się tylko, czy jest jakiś sprytny sposób na wstawienie w Image gradientu kolorów od czarnego do białego z przejściem przez inny wybrany kolor. Coś jak w Excel-u przy kolorach niestandardowych pasek nasycenia.
Oskar Shon

Oskar Shon Dodatki do Office
www.VBATools.pl

Temat: Paleta kolorów - VBA

Sorki ale tak daleko idących planów w stosunku do kolorów to ja nie miałem.
Mam nadzieje że trend podałem właściwy. Teraz już walczysz sam.
Pochwal się jak skończysz projekt. Z pewnością będzie interesujący.Ten post został edytowany przez Autora dnia 28.06.19 o godzinie 16:05
Michał W.

Michał W. Analityk biznesowy/
analityk danych

Temat: Paleta kolorów - VBA

W końcu (z braku czasu) zrezygnowałem z tworzenia własnej palety. Może jeszcze kiedyś do tego wrócę.
Na razie, na moje potrzeby, napisałem sobie 2 krótkie kody. Do moich potrzeb zupełnie wystarczające. Nie jest to tak całkowicie mój pomysł. Wygrzebałem gdzieś na anglojęzycznych stronach kod, który pozwalał w jakimś automacie zmieniać kolory komórek w arkuszu. Dokładnie nie pamiętam co tam się jeszcze działo, ale ten fragment z kolorami sobie przerobiłem i zaadaptowałem do moich potrzeb. Działa świetnie.

A to te 2 kody:
Function FullColorRGB(Optional FullColorCode As Long = 16777212) As Long

Dim RGBRed As Integer
Dim RGBGreen As Integer
Dim RGBBlue As Integer

RGBRed = FullColorCode Mod 256
RGBGreen = (FullColorCode \ 256) Mod 256
RGBBlue = FullColorCode \ 65536

If Application.Dialogs(xlDialogEditColor).Show _
(1, RGBRed, RGBGreen, RGBBlue) = True Then
FullColorRGB = ActiveWorkbook.Colors(1)
End If

End Function

Sub ColorDialog(r As Integer, g As Integer, b As Integer)

Dim FullColorCode As Long

If Application.Dialogs(xlDialogEditColor).Show _
(1, r, g, b) = True Then
FullColorCode = ActiveWorkbook.Colors(1)
r = FullColorCode Mod 256
g = (FullColorCode \ 256) Mod 256
b = FullColorCode \ 65536
End If

End Sub

Następna dyskusja:

Dodanie niestandardowych ko...




Wyślij zaproszenie do