VBAのユーザーフォームの各システムカラーの定数値と、RGB値の取得方法についてまとめました。
システムカラー一覧
各項目ごとの定数一覧です。
カラーコード/RGBの値はWindowsの初期設定を記載しています。
項目名 | 定数 | カラーコード | RGB |
スクロールバー | vbScrollBars | #C8C8C8 | 200,200,200 |
デスクトップ | vbDesktop | #000000 | 0,0,0 |
アクティブタイトルバー | vbActiveTitleBar | #99B4D1 | 153,180,209 |
非アクティブタイトルバー | vbInactiveTitleBar | #BFCDDB | 191,205,219 |
メニューバー | vbMenuBar | #F0F0F0 | 240,240,240 |
ウィンドウの背景 | vbWindowBackground | #FFFFFF | 255,255,255 |
ウィンドウ枠 | vbWindowFrame | #646464 | 100,100,100 |
メニューの文字 | vbMenuText | #000000 | 0,0,0 |
ウィンドウの文字 | vbWindowText | #000000 | 0,0,0 |
アクティブタイトルバーの文字 | vbTitleBarText | #000000 | 0,0,0 |
アクティブウィンドウの境界 | vbActiveBorder | #B4B4B4 | 180,180,180 |
非アクティブウィンドウの境界 | vbInactiveBorder | #F4F7FC | 244,247,252 |
アプリケーションの作業域 | vbApplicationWorkspace | #ABABAB | 171,171,171 |
強調表示 | vbHighlight | #0078D7 | 0,120,215 |
強調表示される文字列 | vbHighlightText | #FFFFFF | 255,255,255 |
ボタンの表面 | vbButtonFace | #F0F0F0 | 240,240,240 |
ボタンの影 | vbButtonShadow | #A0A0A0 | 160,160,160 |
淡色表示された文字列 | vbGrayText | #6D6D6D | 109,109,109 |
ボタンの文字色 | vbButtonText | #000000 | 0,0,0 |
非アクティブタイトルバーの文字 | vbInactiveCaptionText | #000000 | 0,0,0 |
ボタンの強調表示 | vb3DHighlight | #FFFFFF | 255,255,255 |
ボタンの影(濃) | vb3DDKShadow | #696969 | 105,105,105 |
ボタンの影(淡) | vb3DLight | #E3E3E3 | 227,227,227 |
ツールヒントの文字色 | vbInfoText | #000000 | 0,0,0 |
ツールヒント | vbInfoBackground | #FFFFE1 | 255,255,225 |
システムカラーの色を求めるコード
変換コード
Windowsで設定されているシステムカラーのRGB値は、Win32APIの「GetSysColor」で参照できます。
Public Declare PtrSafe Function GetSysColor Lib "user32" (ByVal sType As Long) As Long
''' <summary>
'''システムカラーのRGB値を取得する
''' </summary>
''' <param name="color">システムカラー</param>
''' <returns>RGB値(数値)</returns>
Function GetSysColorNum(ByVal color As Long) As Long
Dim i As Long
If color < 0 Then
GetSysColorNum = GetSysColor(Val("&H" & Right(Hex(color), 2)))
Else
GetSysColorNum = color
End If
End Function
使用例
上記の「変換コード」を使用して、システムカラー「vbHighlight」を選択中のセルの背景色に反映するコードです。
Sub Macro1()
Selection.Interior.color = GetSysColorNum(vbHighlight)
End Sub