サイトについて      連絡先   検索

VBA セルの色を取得する

はじめに

Excel VBA マクロのセルの色を取得する方法を紹介します。

文字色は Range.Font.Color プロパティまたは Cells.Font.Color プロパティから取得できます。

背景色は Range.Interior.Color プロパティまたは Cells.Interior.Color プロパティから取得できます。

  • 目次
    • セルの色を取得する
    • セルの範囲の色を取得する
    • 指定したシートのセルの色を取得する

セルの色を取得する

Range の引数にセル名を指定すると、そのセルの色を取得できます。

セル「A1」の色を取得するにはRange("A1").Font.Colorを入力します。


Dim l As Long
l = Range("A1").Font.Color ' 文字色
l = Range("A1").Interior.Color ' 背景色
Debug.Print(l)

Cells の引数にセルの行と列の番号を指定すると、そのセルの色を取得できます。

行「2」、列「A」の色を取得するにはCells(2, 1).Font.Colorを入力します。


Dim l As Long
l = Cells(1, 1).Font.Color ' A1
l = Cells(2, 1).Font.Color ' A2
l = Cells(1, 2).Interior.Color ' B1
l = Cells(2, 2).Interior.Color ' B2
Debug.Print(l)

色は「Rgb 関数」と同じ値が取得されます。

セルの範囲の色を取得する

セルの範囲の色を取得することはできません。

指定したシートのセルの色を取得する

シートを指定するには Worksheets の引数にシート名またはインデックスを指定します。

Sheet1 を指定するにはWorksheets("Sheet1")またはWorksheets(1)を入力します。

sheet1

Dim l As Long
' Sheet1 のセル「A1」の文字色を取得
l = Worksheets("Sheet1").Range("A1").Font.Color
l = Worksheets(1).Range("A1").Font.Color
Debug.Print(l)

' Sheet2 のセル「A1」の背景色を取得
l = Worksheets("Sheet2").Range("A1").Interior.Color
l = Worksheets(2).Range("A1").Interior.Color
Debug.Print(l)

Sheet1 に Range や Cells を入力すると、自身のシートのセルになります。自身を表すMe.が省略されています。


' どちらも同じコード
Range("A1").Value = "Sheet1"
Me.Range("A1").Value = "Sheet1"

標準モジュールに Range や Cells を入力すると、アクティブなシートのセルになります。アクティブシートを表すActiveSheet.が省略されています。


' どちらも同じコード
Range("A1").Value = "アクティブ"
ActiveSheet.Range("A1").Value = "アクティブ"
  • 目次
    • セルの色を取得する
    • セルの範囲の色を取得する
    • 指定したシートのセルの色を取得する