木曜日, 5月 18, 2023

Excel VBA 18 
選択したセルを16進数色で塗る

今回は、選択したセルを入力した16進数色で塗り潰すVBA。

--------------------
Sub 16進数ペイント()
' 選択されたセルを塗りつぶす16進数の色を取得する
Dim hexColor As String
hexColor = _
InputBox("16進コードを入力 (例 40e0d0 for turquoise):")

' 入力された値が16進数かどうかを確認する
If Not IsHex(hexColor) Then
MsgBox "16進コードを入力" & Chr(13) & _
" (例 40e0d0 for turquoise):", vbExclamation, "エラーです"
' & Chr(13) & MsgBox内での改行設定
' vbExclamationはメッセージ用のアイコン
' vbCritical >警告
' vbQuestion >問い合わせ
' vbExclamation >注意
' vbInfomation >情報
Exit Sub
End If

' RGB値を16進数に変換してセルを塗りつぶす
Selection.Interior.Color = _
RGB(HexToRed(hexColor), _
HexToGreen(hexColor), HexToBlue(hexColor))
End Sub

' 文字列が16進数かどうかを判断する
Function IsHex(hex As String) As Boolean
On Error Resume Next
IsHex = (Val("&H" & hex) > 0)
End Function

' 16進数の赤の値を返す
Function HexToRed(hex As String) As Long
HexToRed = Val("&H" & Mid(hex, 1, 2))
' RGBのR(レッド)
' 文字列を整数とた16進数の最初の2文字を10進数に変換
End Function

' 16進数の緑の値を返す
Function HexToGreen(hex As String) As Long
HexToGreen = Val("&H" & Mid(hex, 3, 2))
' RGBのG(グリーン)
' 文字列を整数とた16進数の3番目から2文字分を10進数に変換
End Function

' 16進数の青の値を返す
Function HexToBlue(hex As String) As Long
HexToBlue = Val("&H" & Mid(hex, 5, 2))
' RGBのB(ブルー)
' 文字列を整数とた16進数の5番目から2文字分を10進数に変換
End Function
--------------------
実行するには・・・

任意のセルを選択し・・・

VBA(16進数ペイント)を実行し、16進コードを入力すると・・・

入力した16進数の指定色で選択したセルが塗りつぶされます。

あり得ない16進数モドキを入力するとエラーを表示します。