Farben per Farbauswahldialog auswählen

Festlegen des Rückgabewertes

Hat der Benutzer keine Farbe gewählt, legen Sie -1 als Rückgabewert der Funktion fest. Der Wert 0 ist hier nicht geeignet, weil 0 der Farbwert für die Farbe Schwarz ist. Sie könnten dann nicht mehr unterscheiden, ob der Benutzer die Farbwahl abgebrochen hat oder wirklich Schwarz als Farbe gewählt hat.

Public Function getFarbe(ByVal FensterHandle As Long, _
Optional ByVal boolErweiterteFarben As Boolean=False) As Long
Dim lngErgebnis As Long
Dim typFarbauswahl As LPCHOOSECOLOR
Dim lngBenutzerFarben As Long
typFarbauswahl.lStructSize = Len(typFarbauswahl)
typFarbauswahl.hWnd = FensterHandle
'Steuern der Anzeige
typFarbauswahl.Flags = CC_SOLIDCOLOR
'Prüfen, ob erweiterte Farbauswahl angezeigt werden soll.
If boolErweiterteFarben = True Then _
typFarbauswahl.Flags = typFarbauswahl.Flags Or CC_FULLOPEN
'Standard-Farben festlegen
typFarbauswahl.lpCustColors = String(16 * 4, 0)
'Dialog anzeigen und Ergebnis ermitteln
lngErgebnis = ChooseColor(typFarbauswahl)
If lngErgebnis <> 0 Then
'gewählte Farbe als Rückgabewert festlegen
getFarbe = typFarbauswahl.rgbResult
Else
'es wurde keine Farbe gewählt - Rückgabewert auf -1 festlegen
getFarbe = -1
End If
End Function

Möchten Sie nun den Farbauswahldialog anzeigen, müssen Sie nur noch die Funktion get-Farbe aufrufen und ihr das Fenster-Handle von Access übergeben, das Sie mit der hWnd-Eigenschaft des Application-Objekts ermitteln können (Listing 3).

Sub aufrufen()
Debug.Print getFarbe(Application.hWndAccessApp)
Debug.Print getFarbe(Application.hWndAccessApp, True)
End Sub