Excelで背景色や文字色を駆使して、わかりやすい表や見やすいデータを色分けして表現したくありませんか?
そんな時、自由自在に色を操れれば、データの解析や確実に役に立ち、作業効率が爆上げされるはずです。
ExcelVBAだと、カラーインデックス(ColorIndex)やRGB(255, 255, 255)を使うのが主流ですかね。
今現在セルに設定されている色が何色なのか、10進数のRGB形式に変換するとどんな値なのか、16進数の#rrggbb形式だとどうなるのか、知りたくありませんか?
色を扱いやすくできるとWeb作成のスタイルシートなどにも応用できます。オシャレにグラデーションなんか付けて見映えを美しくしたいですね。
そこで、色を超絶簡単に設定、取得、変換するマクロをまとめて作ってみました。
百聞は一見に如かず、一目瞭然、一発でイメージが湧き、使い方がわかるようなGIFアニメ付きです。
コピーするだけなので、試しに使ってみて使えるようであれば、ぜひ使ってみてください。
背景色、文字色カラーコード一括取得・設定・変換・グラデーション化
シートを見やすくする時、いろんなセルデータの背景色や文字色の設定を色とりどり使い分けると思います。
ネットで見つけて気に入った色をExcelに反映させたい時、いちいちRGBを入力して試すのはクソめんどくさいですね。
特にちょっとオシャレにグラデーションを付けたくなった時は大変な作業です。
大量の色情報を簡単に一発で取得や設定や変換ができるようになったら、もはや色を制したも同然。
それができるようになるのに役立つVBAマクロを作ってみました。
今回作ったマクロは大きく分けて以下4パターンです。
①RGB値またはRGB10進数またはrrggbb16進数のカラーコードを取得
②RGB値またはRGB10進数またはrrggbb16進数のカラーコードで設定
③RGB値またはRGB10進数またはrrggbb16進数のカラーコードを変換
④RGB値またはRGB10進数またはrrggbb16進数のカラーコードグラデーション設定
なるべくインターフェースを簡単にし、直感で操作できるように目指してます。詳細な仕様はソース上のコメントなどで補足してます。
今回はセルの背景色と文字色のみですが、図形オブジェクトやシートの色設定などにも応用できると思います。
ちなみにカラーインデックスは取れない場合があるので今回は見送ってます。必要であれば追加してみてください。
RGB値またはRGB10進数またはrrggbb16進数のカラーコードを取得
選択したセルの背景色、または、文字色のカラーコードを一度にすべて取得します。
カラーコード取得の操作イメージ
下記画像にて取得操作のイメージを沸かせてみてください。
いっきにまとめてカラーコードを取得してます。
1列のみを選択します。2列以上の選択は弾きます。選択列の右1列目、2列目、3列目にそれぞれ取得したカラーコードを設定します。
RGB値またはRGB10進数またはrrggbb16進数のカラーコードで設定
選択したセルのカラーコードで背景色、または、文字色を一度にすべて設定します。
カラーコード設定の操作イメージ
下記画像にて設定操作のイメージを沸かせてみてください。
いっきにまとめてカラーコードを設定してます。
数値か、または"rgb("で始まっているか、または"#"で始まっているか、でカラーコードかを判断します。エラーの場合はコメントに追加します。
RGB値またはRGB10進数またはrrggbb16進数のカラーコードを変換
選択したセルのカラーコードをRGB値またはRGB10進数またはrrggbb16進数に一度にすべて変換します。
カラーコード変換の操作イメージ
下記画像にて変換操作のイメージを沸かせてみてください。
いっきにまとめてカラーコードを変換してます。
数値か、または"rgb("で始まっているか、または"#"で始まっているか、でカラーコードかを判断します。すべての組み合わせで変換できます。エラーの場合はコメントに追加します。
RGB値またはRGB10進数またはrrggbb16進数のカラーコードグラデーション設定
選択したセルのカラーコードで背景色、または、文字色を一度にすべて設定します。
カラーコードグラデーション設定の操作イメージ
下記画像にて設定操作のイメージを沸かせてみてください。
いっきにまとめて背景色にグラデーション設定してます。2色で判断するので2列で設定します。
数値か、または"rgb("で始まっているか、または"#"で始まっているか、でカラーコードかを判断します。エラーの場合はコメントに追加します。
背景色、文字色の一括取得・設定・変換VBAマクロの主な仕様
細かい処理はコメントで補足してますが、ザックリとした仕様を箇条書きで記載します。
背景色、文字色の一括取得・設定・変換VBAマクロのソースコード
色取得・設定・変換でデータ解析効率を爆上げしたい方は、下記のソースコードを以下↓↓↓のリンクの内容に従って個人用マクロにコピーしてご使用ください。
マクロならば、痒いところに手が届きます。用途によっては目的に沿わない可能性がありますが、Const値を持たせてなるべく汎用的に作成しています。
自分に合った方法にカスタマイズしてみてください。VBAマクロの勉強にも少しは役立つと思います。
もし何かバグっていたらごめんなさい。気付いたら改修します。
Sub 選択セルの背景色のカラーコードを取得()
Const 確認メッセージフラグ = 1 '0:確認メッセージを表示しない、1:確認メッセージを表示する
Const 色取得区分 = 1 '1:背景色から取得、2:文字色から取得
Call RGB値またはRGB10進数またはrrggbb16進数のカラーコードを取得(確認メッセージフラグ _
, 色取得区分)
End Sub
Sub 選択セルの文字色のカラーコードを取得()
Const 確認メッセージフラグ = 1 '0:確認メッセージを表示しない、1:確認メッセージを表示する
Const 色取得区分 = 2 '1:背景色から取得、2:文字色から取得
Call RGB値またはRGB10進数またはrrggbb16進数のカラーコードを取得(確認メッセージフラグ _
, 色取得区分)
End Sub
Sub RGB値またはRGB10進数またはrrggbb16進数のカラーコードを取得(確認メッセージフラグ As Integer _
, 色取得区分 As Integer)
''''''''''定義''''''''''
Dim 実行確認 As Integer
Dim メッセージ As String
Dim 色取得WK As String
Dim 設定色 As Long
Dim RGB配列 As Variant
Dim 赤R, 緑G, 青B As Long
Dim RGB値 As Long
Dim RGB_10進数 As String
Dim rrggbb_16進数 As String
Dim セル As Range
''''''''''チェック''''''''''
If Selection(1).Column < Selection(Selection.Count).Column Then
MsgBox "右隣のセルに結果を設定するので1列で選択してください。"
Exit Sub
End If
''''''''''確認処理''''''''''
If 確認メッセージフラグ = 1 Then
If 色取得区分 = 1 Then
色取得WK = "背景色"
ElseIf 色取得区分 = 2 Then
色取得WK = "文字色"
End If
メッセージ = メッセージ _
& "・" & 色取得WK & "のカラーコードを取得し、" _
& "右隣3セルににRGB値、10進数RGB、16進数#rrggbb、の順に設定します。 " & vbCrLf _
& " 既に値がセットされている場合は上書きされます。" & vbCrLf _
& vbCrLf
'実行確認
If メッセージ <> "" Then
実行確認 = MsgBox(メッセージ & vbCrLf _
& "実行してよろしいですか?", vbYesNo + vbQuestion)
If 実行確認 = vbNo Then Exit Sub
End If
End If
''''''''''色取得処理''''''''''
For Each セル In Selection
If 色取得区分 = 1 Then
設定色 = セル.Interior.Color
ElseIf 色取得区分 = 2 Then
設定色 = セル.Font.Color
End If
RGB配列 = RGB値toRGB10進数配列(設定色)
赤R = RGB配列(0)
緑G = RGB配列(1)
青B = RGB配列(2)
RGB値 = RGB(赤R, 緑G, 青B)
RGB_10進数 = "rgb(" & 赤R & "," & 緑G & "," & 青B & ")"
rrggbb_16進数 = "#" & Right(0 & hex(赤R), 2) & _
Right(0 & hex(緑G), 2) & _
Right(0 & hex(青B), 2)
セル.Offset(0, 1).Value = RGB値
セル.Offset(0, 2).Value = RGB_10進数
セル.Offset(0, 3).Value = rrggbb_16進数
Next
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub 選択セルのカラーコードで背景色設定()
Const 確認メッセージフラグ = 1 '0:確認メッセージを表示しない、1:確認メッセージを表示する
Const 色設定区分 = 1 '1:背景色に設定、2:文字色に設定
Call RGB値またはRGB10進数またはrrggbb16進数のカラーコードで設定(確認メッセージフラグ _
, 色設定区分)
End Sub
Sub 選択セルのカラーコードで文字色設定()
Const 確認メッセージフラグ = 1 '0:確認メッセージを表示しない、1:確認メッセージを表示する
Const 色設定区分 = 2 '1:背景色に設定、2:文字色に設定
Call RGB値またはRGB10進数またはrrggbb16進数のカラーコードで設定(確認メッセージフラグ _
, 色設定区分)
End Sub
Sub RGB値またはRGB10進数またはrrggbb16進数のカラーコードで設定(確認メッセージフラグ As Integer _
, 色設定区分 As Integer)
Dim メッセージ As String
Dim 実行確認 As String
Dim 色設定WK As String
Dim セル As Range
Dim RGB配列 As Variant
Dim RGB値 As Long
''''''''''確認処理''''''''''
If 確認メッセージフラグ = 1 Then
If 色設定区分 = 1 Then
色設定WK = "背景色"
ElseIf 色設定区分 = 2 Then
色設定WK = "文字色"
End If
メッセージ = メッセージ _
& "・RGB値、10進数RGB、16進数#rrggbb、いずれかのカラーコードを取得し、" _
& "セルの" & 色設定WK & "を設定します。 " & vbCrLf _
& vbCrLf
'実行確認
If メッセージ <> "" Then
実行確認 = MsgBox(メッセージ & vbCrLf _
& "実行してよろしいですか?", vbYesNo + vbQuestion)
If 実行確認 = vbNo Then Exit Sub
End If
End If
''''''''''色設定処理''''''''''
For Each セル In Selection
On Error Resume Next
If セル.Value <> "" Then
'''''色判定'''''
If IsNumeric(セル.Value) Then
'数値の場合はRGB値と判断
RGB値 = セル.Value
ElseIf InStr(StrConv(セル.Value, vbLowerCase), "rgb(") = 1 Then
'"rgb("で始まっている場合はRGB10進数と判断(大文字は小文字に変換)
RGB配列 = RGB10進数文字toRGB10進数配列(セル.Value)
RGB値 = RGB(RGB配列(0), RGB配列(1), RGB配列(2))
ElseIf InStr(StrConv(セル.Value, vbLowerCase), "#") = 1 Then
'"#"で始まっている場合はrrggbb16進数と判断
RGB配列 = rrggbb16進数toRGB10進数配列(セル.Value)
RGB値 = RGB(RGB配列(0), RGB配列(1), RGB配列(2))
End If
'''''色設定'''''
If 色設定区分 = 1 Then
セル.Interior.Color = RGB値
ElseIf 色設定区分 = 2 Then
セル.Font.Color = RGB値
End If
End If
If Err.Number <> 0 Then
セル.AddComment "エラー" & Err.Number & ":" & Err.Description
On Error GoTo 0 'エラーオブジェクト初期化
End If
Next
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub 選択セルのカラーコードを固定変換()
Const 確認メッセージフラグ = 1 '0:確認メッセージを表示しない、1:確認メッセージを表示する
Const 色固定変換区分 = 6 '0:固定変換なし
'1:RGB値→RGB10進数
'2:RGB値→rrggbb16進数
'3:RGB10進数→RGB値
'4:RGB10進数→rrggbb16進数
'5:rrggbb16進数→RGB値
'6:rrggbb16進数→RGB10進数
Const 色強制変換区分 = 0 '0:強制変換なし
Call RGB値またはRGB10進数またはrrggbb16進数のカラーコードを変換(確認メッセージフラグ _
, 色固定変換区分 _
, 色強制変換区分)
End Sub
Sub 選択セルのカラーコードを強制変換()
Const 確認メッセージフラグ = 1 '0:確認メッセージを表示しない、1:確認メッセージを表示する
Const 色固定変換区分 = 0 '0:固定変換なし
Const 色強制変換区分 = 3 '0:強制変換なし
'1:RGB10進数またはrrggbb16進数→RGB値
'2:RGB値またはrrggbb16進数→RGB10進数
'3:RGB値またはRGB10進数→rrggbb16進数
Call RGB値またはRGB10進数またはrrggbb16進数のカラーコードを変換(確認メッセージフラグ _
, 色固定変換区分 _
, 色強制変換区分)
End Sub
Sub RGB値またはRGB10進数またはrrggbb16進数のカラーコードを変換(確認メッセージフラグ As Integer _
, 色固定変換区分 As Integer _
, 色強制変換区分 As Integer)
''''''''''定義''''''''''
Dim 実行確認 As Integer
Dim メッセージ As String
Dim 色変換WK As String
Dim RGB配列 As Variant
Dim 赤R, 緑G, 青B As Long
Dim RGB変換値 As String
Dim RGB値 As Long
Dim RGB_10進数 As String
Dim rrggbb_16進数 As String
Dim セル As Range
''''''''''チェック''''''''''
If Selection(1).Column < Selection(Selection.Count).Column Then
MsgBox "右隣のセルに結果を設定するので1列で選択してください。"
Exit Sub
End If
''''''''''確認処理''''''''''
If 確認メッセージフラグ = 1 Then
If 色固定変換区分 = 1 Then
色変換WK = "RGB→をRGB10進数"
ElseIf 色固定変換区分 = 2 Then
色変換WK = "RGB値→rrggbb16進数"
ElseIf 色固定変換区分 = 3 Then
色変換WK = "RGB10進数→RGB値"
ElseIf 色固定変換区分 = 4 Then
色変換WK = "RGB10進数→rrggbb16進数"
ElseIf 色固定変換区分 = 5 Then
色変換WK = "rrggbb16進数→RGB値"
ElseIf 色固定変換区分 = 6 Then
色変換WK = "rrggbb16進数→RGB10進数"
End If
If 色強制変換区分 = 1 Then
色変換WK = "RGB10進数またはrrggbb16進数→RGB値"
ElseIf 色強制変換区分 = 2 Then
色変換WK = "RGB値またはrrggbb16進数→RGB10進数"
ElseIf 色強制変換区分 = 3 Then
色変換WK = "RGB値またはRGB10進数→rrggbb16進数"
End If
メッセージ = メッセージ _
& "・" & 色変換WK & "に変換し、右隣のセルに設定します。 " & vbCrLf _
& " 既に値がセットされている場合は上書きされます。" & vbCrLf _
& vbCrLf
'実行確認
If メッセージ <> "" Then
実行確認 = MsgBox(メッセージ & vbCrLf _
& "実行してよろしいですか?", vbYesNo + vbQuestion)
If 実行確認 = vbNo Then Exit Sub
End If
End If
''''''''''色変換処理''''''''''
For Each セル In Selection
On Error Resume Next
If セル.Value <> "" Then
If IsNumeric(セル.Value) Then
'数値の場合はRGB値と判断
If 色固定変換区分 = 1 Or 色強制変換区分 = 2 Then
'RGB→をRGB10進数
RGB配列 = RGB値toRGB10進数配列(セル.Value)
RGB変換値 = "rgb(" & RGB配列(0) & "," & RGB配列(1) & "," & RGB配列(2) & ")"
ElseIf 色固定変換区分 = 2 Or 色強制変換区分 = 3 Then
'RGB値→rrggbb16進数
RGB配列 = RGB値toRGB10進数配列(セル.Value)
RGB変換値 = "#" & Right(0 & hex(RGB配列(0)), 2) & _
Right(0 & hex(RGB配列(1)), 2) & _
Right(0 & hex(RGB配列(2)), 2)
End If
ElseIf InStr(StrConv(セル.Value, vbLowerCase), "rgb(") = 1 Then
'"rgb("で始まっている場合はRGB10進数と判断(大文字は小文字に変換)
If 色固定変換区分 = 3 Or 色強制変換区分 = 1 Then
'RGB10進数→RGB値
RGB配列 = RGB10進数文字toRGB10進数配列(セル.Value)
RGB変換値 = RGB(RGB配列(0), RGB配列(1), RGB配列(2))
ElseIf 色固定変換区分 = 4 Or 色強制変換区分 = 3 Then
'RGB10進数→rrggbb16進数
RGB配列 = RGB10進数文字toRGB10進数配列(セル.Value)
RGB変換値 = "#" & Right(0 & hex(RGB配列(0)), 2) & _
Right(0 & hex(RGB配列(1)), 2) & _
Right(0 & hex(RGB配列(2)), 2)
End If
ElseIf InStr(StrConv(セル.Value, vbLowerCase), "#") = 1 Then
'"#"で始まっている場合はrrggbb16進数と判断
If 色固定変換区分 = 5 Or 色強制変換区分 = 1 Then
'rrggbb16進数→RGB値
RGB配列 = rrggbb16進数toRGB10進数配列(セル.Value)
RGB変換値 = RGB(RGB配列(0), RGB配列(1), RGB配列(2))
ElseIf 色固定変換区分 = 6 Or 色強制変換区分 = 2 Then
'rrggbb16進数→RGB10進数
RGB配列 = rrggbb16進数toRGB10進数配列(セル.Value)
RGB変換値 = "rgb(" & RGB配列(0) & "," & RGB配列(1) & "," & RGB配列(2) & ")"
End If
End If
セル.Offset(0, 1).Value = RGB変換値
End If
If Err.Number <> 0 Then
セル.AddComment "エラー" & Err.Number & ":" & Err.Description
On Error GoTo 0 'エラーオブジェクト初期化
End If
Next
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub 選択セルのカラーコードで背景色グラデーション設定()
Const 確認メッセージフラグ = 1 '0:確認メッセージを表示しない、1:確認メッセージを表示する
Call RGB値またはRGB10進数またはrrggbb16進数のカラーコードグラデーション設定(確認メッセージフラグ)
End Sub
Sub RGB値またはRGB10進数またはrrggbb16進数のカラーコードグラデーション設定(確認メッセージフラグ As Integer)
Dim メッセージ As String
Dim 実行確認 As String
Dim 色設定WK As String
Dim セル As Range
Dim RGB配列 As Variant
Dim RGB値1, RGB値2 As Long
''''''''''チェック''''''''''
If Selection(Selection.Count).Column - Selection(1).Column + 1 <> 2 Then
MsgBox "2色の組み合わせで右隣のセルにグラデーション設定するので2列で選択してください。"
Exit Sub
End If
''''''''''確認処理''''''''''
If 確認メッセージフラグ = 1 Then
メッセージ = メッセージ _
& "・RGB値、10進数RGB、16進数#rrggbb、いずれかのカラーコードを2色取得し、" _
& "セルの背景色にグラデーション設定します。 " & vbCrLf _
& " 既に背景色がセットされている場合は上書きされます。" & vbCrLf _
& vbCrLf
'実行確認
If メッセージ <> "" Then
実行確認 = MsgBox(メッセージ & vbCrLf _
& "実行してよろしいですか?", vbYesNo + vbQuestion)
If 実行確認 = vbNo Then Exit Sub
End If
End If
''''''''''色設定処理''''''''''
For Each セル In Selection
On Error Resume Next
If セル.Value <> "" _
And セル.Column = Selection(1).Column Then '選択1列目のみ(2列目はoffsetで)
'''''色判定'''''
'1色目
If IsNumeric(セル.Value) Then
'数値の場合はRGB値と判断
RGB値1 = セル.Value
ElseIf InStr(StrConv(セル.Value, vbLowerCase), "rgb(") = 1 Then
'"rgb("で始まっている場合はRGB10進数と判断(大文字は小文字に変換)
RGB配列 = RGB10進数文字toRGB10進数配列(セル.Value)
RGB値1 = RGB(RGB配列(0), RGB配列(1), RGB配列(2))
ElseIf InStr(StrConv(セル.Value, vbLowerCase), "#") = 1 Then
'"#"で始まっている場合はrrggbb16進数と判断
RGB配列 = rrggbb16進数toRGB10進数配列(セル.Value)
RGB値1 = RGB(RGB配列(0), RGB配列(1), RGB配列(2))
End If
'2色目
If IsNumeric(セル.Offset(0, 1).Value) Then
'数値の場合はRGB値と判断
RGB値2 = セル.Offset(0, 1).Value
ElseIf InStr(StrConv(セル.Offset(0, 1).Value, vbLowerCase), "rgb(") = 1 Then
'"rgb("で始まっている場合はRGB10進数と判断(大文字は小文字に変換)
RGB配列 = RGB10進数文字toRGB10進数配列(セル.Offset(0, 1).Value)
RGB値2 = RGB(RGB配列(0), RGB配列(1), RGB配列(2))
ElseIf InStr(StrConv(セル.Offset(0, 1).Value, vbLowerCase), "#") = 1 Then
'"#"で始まっている場合はrrggbb16進数と判断
RGB配列 = rrggbb16進数toRGB10進数配列(セル.Offset(0, 1).Value)
RGB値2 = RGB(RGB配列(0), RGB配列(1), RGB配列(2))
End If
'''''グラデーション色設定'''''
With セル.Offset(0, 2).Interior
.Pattern = xlPatternLinearGradient
.Gradient.Degree = 90 '線形グラデーション(色が変化する角度を指定するために使用)
.Gradient.ColorStops.Clear
End With
With セル.Offset(0, 2).Interior.Gradient.ColorStops.Add(0)
.Color = RGB値1
.TintAndShade = 0
End With
With セル.Offset(0, 2).Interior.Gradient.ColorStops.Add(1)
.Color = RGB値2
.TintAndShade = 0
End With
End If
If Err.Number <> 0 Then
セル.AddComment "エラー" & Err.Number & ":" & Err.Description
On Error GoTo 0 'エラーオブジェクト初期化
End If
Next
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function RGB値toRGB10進数配列(RGB値 As Long) As Long()
Dim RGB配列(3) As Long
RGB配列(0) = RGB値 Mod 256 '赤R
RGB配列(1) = Int(RGB値 / 256) Mod 256 '緑G
RGB配列(2) = Int(RGB値 / 256 / 256) '青B
RGB値toRGB10進数配列 = RGB配列
End Function
Function RGB10進数文字toRGB10進数配列(RGB値 As String) As String()
Dim rgb値変換 As String
Dim 開始位置, 終了位置 As Integer
rgb値変換 = Replace(RGB値, " ", "")
開始位置 = InStr(rgb値変換, "rgb(")
終了位置 = InStr(開始位置 + 1, rgb値変換, ")")
rgb値変換 = Mid(rgb値変換, 開始位置 + 4, 終了位置 - 開始位置 - 4)
RGB10進数文字toRGB10進数配列 = Split(rgb値変換, ",")
End Function
Function rrggbb16進数toRGB10進数配列(rrggbb値) As Integer()
Dim RGB配列(3) As Integer
rrggbb値 = StrConv(rrggbb値, vbUpperCase) '大文字変換
RGB配列(0) = rrggbb16進数toRGB10進数_1(Mid(rrggbb値, 2, 2)) '赤R
RGB配列(1) = rrggbb16進数toRGB10進数_1(Mid(rrggbb値, 4, 2)) '緑G
RGB配列(2) = rrggbb16進数toRGB10進数_1(Mid(rrggbb値, 6, 2)) '青B
rrggbb16進数toRGB10進数配列 = RGB配列
End Function
Function rrggbb16進数toRGB10進数_1(ByRef hex As String) As Integer
If Len(hex) <> 2 Then
rrggbb16進数toRGB10進数_1 = -1
Exit Function
End If
If (left(hex, 1) >= 0 And left(hex, 1) <= 9) Or _
(left(hex, 1) >= "A" And left(hex, 1) <= "F") Then
Else
rrggbb16進数toRGB10進数_1 = -1
Exit Function
End If
If (Right(hex, 1) >= 0 And Right(hex, 1) <= 9) Or _
(Right(hex, 1) >= "A" And Right(hex, 1) <= "F") Then
Else
rrggbb16進数toRGB10進数_1 = -1
Exit Function
End If
rrggbb16進数toRGB10進数_1 = rrggbb16進数toRGB10進数_2(left(hex, 1)) * 16 _
+ rrggbb16進数toRGB10進数_2(Right(hex, 1))
End Function
Function rrggbb16進数toRGB10進数_2(ByRef hex As String) As Integer
Select Case left(hex, 1)
Case "A"
rrggbb16進数toRGB10進数_2 = 10
Case "B"
rrggbb16進数toRGB10進数_2 = 11
Case "C"
rrggbb16進数toRGB10進数_2 = 12
Case "D"
rrggbb16進数toRGB10進数_2 = 13
Case "E"
rrggbb16進数toRGB10進数_2 = 14
Case "F"
rrggbb16進数toRGB10進数_2 = 15
Case "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"
rrggbb16進数toRGB10進数_2 = CInt(hex)
Case Else
rrggbb16進数toRGB10進数_2 = -1
End Select
End Function
実行方法
色取得は「選択セルの背景色のカラーコードを取得()」「選択セルの文字色のカラーコードを取得()」を実行してください。
色設定は「選択セルのカラーコードで背景色設定()」「選択セルのカラーコードで文字色設定()」を実行してください。
色変換は「選択セルのカラーコードを固定変換()」「選択セルのカラーコードを強制変換()」を実行してください。
グラデーション色設定は「選択セルのカラーコードで背景色グラデーション設定()」を実行してください。
目的に応じて設定変更してカスタマイズしてください。
最後に
Excelの使い方は人それぞれ、いろんなやり方があると思いますが、一例としてご紹介させていただきました。
ExcelVBAマクロはちょっとした向上心さえあれば、取っ付きやすいプログラムなのでショートカットキーなどと組み合わせてぜひ活用してみてください。
Excel全ショートカットキー一覧はこちら↓↓↓
ちょっと工夫すれば、ちょっとした操作に1分かかっていた作業を10秒でこなすことができるようになる可能性があります。
それだけでも、積み上げれば相当の工数を削減できるはずなので、ぜひ自分に合ったやり方を模索していきましょう。
コメント