VBA

【VBA】カラー定数の一覧表を取得する関数

記事内に商品プロモーションを含む場合があります

こんにちは、hokkyokunです。

VBAで背景色や文字色を考える際に
あらかじめ組み込まれているカラー定数というものがあります。

例えば「黄色」を指定したい場合「vbYellow」と指定すると
エクセルの見本でよくある「黄色」に塗ることができます。

こういった定数が150程度すでに組み込まれていますが、
いちいち定数名を覚えられないし、色もどんなのかわからないので
ネットで検索して調べることが多いと思います。

私もいちいち調べていたのですが、
めんどくさくなったので一覧表を呼び出せる関数を作りました。

  • ネットに接続せず、オフラインで呼び出せます。
    (コードは後で解説しますが、めちゃくちゃ泥臭いことやっています(笑))
  • コードをコピペすればすぐ使えます。

良ければ使ってみてください。

カラー定数一覧表を呼び出す関数

コード

  • 関数名
    color_Constants ( ws_Name)
  • 引数
    ws_Name : シート名(データ型は文字列型)
  • 戻り値
    無し

引数に「シート名」を指定することで
その「シート名」で新たなシートを作成し、カラー定数一覧を記載します。

すでに同名のシートが存在する場合は
上書きされますので、そこだけは十分注意してください。

Function color_Constants(ByVal ws_Name As String)

Dim arrs, arr As Variant
Dim arrs2, arr2 As Variant
Dim textVB As String
Dim text1, text2, text3, text4, text5, text6 As String
Dim text As String
Dim i, j As Long

Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets
    If ws.Name = ws_Name Then
        Application.DisplayAlerts = False
        ws.Delete
        Application.DisplayAlerts = True
    End If
Next

With ThisWorkbook
    Set ws = .Worksheets.Add(after:=.Worksheets(.Worksheets.Count))
End With
ws.Name = ws_Name

textVB = "vbBlack,0,黒:vbRed,255,赤:vbGreen,65280,緑:vbYellow,65535,黄:vbBlue,16711680,青:vbMagenta,16711935,紫:vbCyan,16776960,シアン:vbWhite,16777215,白"
text1 = "rgbAliceBlue,16775408,アリスブルー:rgbAntiqueWhite,14150650,アンティークホワイト:rgbAqua,16776960,水色:rgbAquamarine,13959039,アクアマリン:rgbAzure,16777200,空色:rgbBeige,14480885,ベージュ:rgbBisque,12903679,ビスク:rgbBlack,0,黒:rgbBlanchedAlmond,13495295,ブランシュアーモンド:rgbBlue,16711680,青:rgbBlueViolet,14822282,青紫:rgbBrown,2763429,茶:rgbBurlyWood,8894686,バーリーウッド:rgbCadetBlue,10526303,カデットブルー:rgbChartreuse,65407,シャルトルーズ:rgbCoral,5275647,さんご:rgbCornflowerBlue,15570276,コーンフラワーブルー:rgbCornsilk,14481663,コーンシルク:rgbCrimson,3937500,深紅:rgbDarkBlue,9109504,濃い青:rgbDarkCyan,9145088,濃いシアン:rgbDarkGoldenrod,755384,濃いゴールデンロッド:rgbDarkGray,11119017,濃い灰色:rgbDarkGreen,25600,濃い緑"
text2 = "rgbDarkGrey,11119017,濃い灰色:rgbDarkKhaki,7059389,濃いカーキ:rgbDarkMagenta,9109643,濃いマゼンタ:rgbDarkOliveGreen,3107669,濃いオリーブグリーン:rgbDarkOrange,36095,濃いオレンジ:rgbDarkOrchid,13382297,濃いオーキッド:rgbDarkRed,139,濃い赤:rgbDarkSalmon,8034025,濃いサーモンピンク:rgbDarkSeaGreen,9419919,濃いシーグリーン:rgbDarkSlateBlue,9125192,濃いスレートブルー:rgbDarkSlateGray,5197615,濃いスレートグレー:rgbDarkSlateGrey,5197615,濃いスレートグレー:rgbDarkTurquoise,13749760,濃いターコイズ:rgbDarkViolet,13828244,濃い紫:rgbDeepPink,9639167,深いピンク:rgbDeepSkyBlue,16760576,深いスカイブルー:rgbDimGray,6908265,ディムグレー:rgbDimGrey,6908265,ディムグレー:rgbDodgerBlue,16748574,ドジャーブルー:rgbFireBrick,2237106,れんが色:rgbFloralWhite,15792895,フローラルホワイト:rgbForestGreen,2263842,フォレストグリーン:rgbFuchsia,16711935,明るい紫:rgbGainsboro,14474460,ゲーンズボロ:rgbGhostWhite,16775416,ゴーストホワイト"
text3 = "rgbGold,55295,ゴールド:rgbGoldenrod,2139610,ゴールデンロッド:rgbGray,8421504,灰色:rgbGreen,32768,緑:rgbGreenYellow,3145645,グリーンイエロー:rgbGrey,8421504,灰色:rgbHoneydew,15794160,ハニーデュー:rgbHotPink,11823615,ホットピンク:rgbIndianRed,6053069,インディアンレッド:rgbIndigo,8519755,インディゴ:rgbIvory,15794175,アイボリー:rgbKhaki,9234160,カーキ:rgbLavender,16443110,ラベンダー:rgbLavenderBlush,16118015,ラベンダーブラッシュ:rgbLawnGreen,64636,若草色:rgbLemonChiffon,13499135,レモンシフォン:rgbLightBlue,15128749,明るい青:rgbLightCoral,8421616,薄いさんご:rgbLightCyan,9145088,明るい水色:rgbLightGoldenrodYellow,13826810,LightGoldenrodYellow:rgbLightGray,13882323,薄い灰色:rgbLightGreen,9498256,明るい緑:rgbLightGrey,13882323,薄い灰色:rgbLightPink,12695295,薄いピンク:rgbLightSalmon,8036607,薄いサーモンピンク"
text4 = "rgbLightSeaGreen,11186720,薄いシーグリーン:rgbLightSkyBlue,16436871,薄いスカイブルー:rgbLightSlateGray,10061943,薄いスレートグレー:rgbLightSteelBlue,14599344,薄いスチールブルー:rgbLightYellow,14745599,明るい黄:rgbLime,65280,黄緑:rgbLimeGreen,3329330,ライムグリーン:rgbLinen,15134970,リネン:rgbMaroon,128,栗色:rgbMediumAquamarine,11206502,淡いアクアマリン:rgbMediumBlue,13434880,淡い青:rgbMediumOrchid,13850042,淡いオーキッド:rgbMediumPurple,14381203,淡い紫:rgbMediumSeaGreen,7451452,淡いシーグリーン:rgbMediumSlateBlue,15624315,淡いスレートブルー:rgbMediumSpringGreen,10156544,淡いスプリンググリーン:rgbMediumTurquoise,13422920,淡いターコイズ:rgbMediumVioletRed,8721863,淡いバイオレットレッド:rgbMidnightBlue,7346457,ミッドナイトブルー:rgbMintCream,16449525,ミントクリーム:rgbMistyRose,14804223,ミスティローズ:rgbMoccasin,11920639,モカシン:rgbNavajoWhite,11394815,ナバホホワイト:rgbNavy,8388608,ネイビー:rgbNavyBlue,8388608,ネイビーブルー"
text5 = "rgbOldLace,15136253,オールドレース:rgbOlive,32896,オリーブ:rgbOliveDrab,2330219,オリーブドラブ:rgbOrange,42495,オレンジ:rgbOrangeRed,17919,オレンジレッド:rgbOrchid,14053594,オーキッド:rgbPaleGoldenrod,7071982,ペールゴールデンロッド:rgbPaleGreen,10025880,ペールグリーン:rgbPaleTurquoise,15658671,ペールターコイズ:rgbPaleVioletRed,9662683,ペールバイオレットレッド:rgbPapayaWhip,14020607,パパイヤホイップ:rgbPeachPuff,12180223,ピーチパフ:rgbPeru,4163021,ペルー:rgbPink,13353215,ピンク:rgbPlum,14524637,プラム:rgbPowderBlue,15130800,パウダーブルー:rgbPurple,8388736,紫:rgbRed,255,赤:rgbRosyBrown,9408444,ローズブラウン:rgbRoyalBlue,14772545,ロイヤルブルー:rgbSalmon,7504122,サーモンピンク:rgbSandyBrown,6333684,サンディブラウン:rgbSeaGreen,5737262,シーグリーン:rgbSeashell,15660543,シーシェル:rgbSienna,2970272,シェンナ"
text6 = "rgbSilver,12632256,銀色:rgbSkyBlue,15453831,スカイブルー:rgbSlateBlue,13458026,スレートブルー:rgbSlateGray,9470064,スレートグレー:rgbSnow,16448255,スノー:rgbSpringGreen,8388352,スプリンググリーン:rgbSteelBlue,11829830,スチールブルー:rgbTan,9221330,タン:rgbTeal,8421376,青緑:rgbThistle,14204888,あざみ色:rgbTomato,4678655,トマト:rgbTurquoise,13688896,ターコイズ:rgbViolet,15631086,紫色:rgbWheat,11788021,小麦:rgbWhite,16777215,白:rgbWhiteSmoke,16119285,ホワイトスモーク:rgbYellow,65535,黄:rgbYellowGreen,3329434,イエローグリーン"

text = Join(Array(textVB, text1, text2, text3, text4, text5, text6), ":")
arrs = Split(text, ":")

'列名
ws.Cells(1, 1).Value = "色"
ws.Cells(1, 2).Value = "名前"
ws.Cells(1, 3).Value = "値"
ws.Cells(1, 4).Value = "説明"

i = 2
For Each arr In arrs
    arrs2 = Split(arr, ",")
    j = 2
    For Each arr2 In arrs2
        ws.Cells(i, j).Value = arr2
        j = j + 1
    Next
    
    '色の見本処理
    ws.Cells(i, 1).Interior.Color = ws.Cells(i, 3).Value
    
    
    i = i + 1
Next

ws.Range("B1:D1").EntireColumn.AutoFit
End Function

解説

コードを見て分かる方は分かると思いますが、
非常に泥臭いコードです(笑)

シート情報を全て文字列として
コードの中に記載しています。

例えば「vbBlack」は黒を表すカラー定数ですが、カラー値は「0」です。
この情報を「”vbBlack,0,黒”」と文字列で直接コード内に記載しています。

これをsplit関数や
join関数(一つの文字列変数で収まらなかったので複数の変数に分けて書き込んでいる)
を用いて2次元配列にして、
表形式に転記しています。

正直ダサダサコードですが、
肝心のカラー定数一覧はちゃんと見れるし、ネットにつながなくても大丈夫なので
まあいいかと…

使い方

コードをコピペしてシート名を指定して使用してください。

Sub test()

Call color_Constants("color_constants")
End Sub

下記のような表が作成されると思います。

色の指定の仕方

肝心の色の指定方法ですが、
下記のようにコーディングしてください。

Sub test2()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets(1)

'背景色
'「ColorConstants」と入力するとvbが付く定数(vbYellowやvbBlack)の一覧が出るので楽
ws.Cells(2, 2).Interior.Color = ColorConstants.vbYellow
'「ColorConstants」を入れなくても大丈夫
ws.Cells(3, 2).Interior.Color = vbYellow

'「XlRgbColor」と入力するとrgbが付く定数(rgbAliceBlue,rgbCrimsonなど)の一覧から選択できる
ws.Cells(4, 2).Interior.Color = XlRgbColor.rgbAliceBlue
'「XlRgbColor」も省略可
ws.Cells(5, 2).Interior.Color = rgbAliceBlue


'文字色
'こちらも背景色と同様
ws.Cells(2, 3).Font.Color = ColorConstants.vbRed
ws.Cells(3, 3).Font.Color = vbRed
ws.Cells(4, 3).Font.Color = XlRgbColor.rgbCoral
ws.Cells(5, 3).Font.Color = rgbCoral

End Sub

ブログ村ランキング参加中です。よかったらフォローお願いします!!

PVアクセスランキング にほんブログ村