VBAで色を指定する方法【コピペで使えるサンプルコードを掲載】
こんな疑問を解決します。
この記事ではいろんな「VBAで色を指定する方法」をご紹介します。
- セルの色を塗り潰す
- 図形の色を指定する
- 罫線の色を指定する
- テキストの色を指定する
上記の処理をVBAを使って自動化することができればエクセル業務の効率を格段にアップさせることができます。
「VBAで色を指定する基本操作」から「色を指定するVBAはどのような仕事に応用できるのか」を具体的に紹介しています。
コピペで使えるサンプルコードも多数掲載しているので是非チェックしてみてください。
目次
VBAで色を指定する基本操作
セルを塗りつぶす基本操作
セルの塗りつぶしをするVBAはInteriorプロパティを使用します。
基本コード
Range . Interior . Color = 設定値
基本コードは上記の通りなのですが、色を指定する方法には2種類のコードの書き方があります。
基本コードの「設定値」に「RGB値」を記載するか「色定数」を記載するかで、「設定値」の書き方が変わってきます。
「RGB値」と「色定数」の比較
「RGB値」で色を指定するには、0~255の数字を入れて色を指定します。
基本コードはこちら
Range . Interior . Color = RGB ( red , green , blue )
カッコの中のredとgreenとblueにそれぞれ0~255の数字を入れて色を調整します。
「RGB値」でA1セルを塗り潰すときのコードがこちら
Range(“A1").Interior.Color = RGB(255,0,0) :A1セルが赤
Range(“A1").Interior.Color = RGB(0,255,0) :A1セルが緑
Range(“A1").Interior.Color = RGB(0,0,255) :A1セルが青
RGB値はExcelのツールで簡単に数値を調べることができます。
色の設定で下に出てくのがRGBの数値なので、ここで色を調べてプログラムに書き込むというやり方がおすすめです。
「色定数」で色を指定するには、決められたコードを入力します。
基本コードはこちら
Range . Interioe . Color = 色定数
基本コードの「色定数」の部分に決められたコードを入力します。
決められたコードがこちら
黒 | vbBlack |
白 | vbWhite |
赤 | vbRed |
青 | vbBlue |
緑 | vbGreen |
黄 | vbTellow |
「色定数」でA1セルを塗り潰すときのコードがこちら
Range(“A1").Interior.Color = vbRed :A1セルが赤
Range(“A1").Interior.Color = vbGreen :A1セルが緑
Range(“A1").Interior.Color = vbBlue :A1セルが青
色定数よりもRGB値を使った方が詳細に色の調整ができるので、私はRGB値をよく使用しています。
テキストの色を指定する基本操作
テキストの色を指定するVBAはFontプロパティを使用します。
基本コード
Range . Font . プロパティ = 設定値
プロパティと設定値については先ほど紹介した「セルの塗りつぶし」の方法と同じです。
「RGB値」でA1セルに入力されたテキストの色を指定するVBAがこちら
Range(“A1").Font.Color = RGB(255,0,0) :A1セルが赤
Range(“A1").Font.Color = RGB(0,255,0) :A1セルが緑
Range(“A1").Font.Color = RGB(0,0,255) :A1セルが青
「色定数」でA1セルに入力されたテキストの色を指定するVBAがこちら
Range(“A1").Font.Color = vbRed :A1セルが赤
Range(“A1").Font.Color = vbGreen :A1セルが緑
Range(“A1").Font.Color = vbBlue :A1セルが青
罫線の色を指定する基本操作
罫線の色を指定するVBAはBordersプロパティを使用します。
基本コード
Range . Borders . プロパティ = 設定値
プロパティと設定値については先ほど紹介した「セルの塗りつぶし」の方法と同じです。
「RGB値」でA1セルの罫線の色を指定するVBAがこちら
Range(“A1").Borders.Color = RGB(255,0,0) :A1セル4辺が赤
Range(“A1").Borders(xlEdgeTop).Color = RGB(255,0,0) :A1セル上辺が赤
Range(“A1").Borders(xlEdgeBottom).Color = RGB(255,0,0) :A1セル下辺が赤
Range(“A1").Borders(xlEdgeRight).Color = RGB(255,0,0):A1セル右辺が赤
Range(“A1").Borders(xlEdgeLeft).Color = RGB(255,0,0) :A1セルの左辺が赤
「色定数」でA1セルの罫線の色を指定するVBAがこちら
Range(“A1").Borders.Color = vbRed :A1セル4辺が赤
Range(“A1").Borders(xlEdgeTop).Color = vbRed :A1セル上辺が赤
Range(“A1").Borders(xlEdgeBottom).Color = vbRed :A1セル下辺が赤
Range(“A1").Borders(xlEdgeRight).Color = vbRed :A1セル右辺が赤
Range(“A1").Borders(xlEdgeLeft).Color = vbRed :A1セルの左辺が赤
Bordersプロパティは、「指定する罫線がどの辺なのか」を指定する必要があります。
指定しなければ、「指定したセル範囲を囲む」という処理が実行されますので注意してください。
下記の記事では、VBAで罫線を操作する方法について詳しく解説していますので参考にしてみてください。
図形の色を指定する基本操作
図形の色を指定するには、「図形を挿入するVBA」のあとに「図形の色を指定するVBA」を記載することになります。
図形を挿入し、色を変更するサンプルコードをご紹介します。
With ActiveSheet.Shapes.AddShape(msoShapeOval, 10, 10, 10, 10)
.Fill.Visible = msoFalse
.Line.Weight = 1
.Line.ForeColor.RGB = RGB(255, 255, 255)
End With
上記サンプルコードの4行目が図形の色を指定するコードになっています。
コードは、「図形の線の色を黒色に指定する」という内容です。
他にも、図形の色塗り潰すVBAも設定することができます。
図形の色を指定するVBAは「図形を挿入するVBA」と併せて使い方を確認した方がより効果的に扱えるようになります。
下記の記事では、VBAで図形を挿入する方法について詳しく解説していますので参考にしてみてください。
色を指定するVBAを扱えるようになると下記の動画のような処理も一瞬で処理することができます。
一つや二つセルの塗りつぶしを変更するのであれば、わざわざVBAの設定をする必要はありませんが、
一日に何時間もかけて色を編集するような作業をするのであれば、VBAの設定が絶対におすすめです。
上記の動画は、「色を指定する基本操作」の知識だけで組み立てたVBAを使用しています。
是非「色を指定するVBA」も基本から身に付けてみてください。
色を指定するVBAの応用方法
色を指定するVBAはいろんな仕事に応用することができます。
実際にスケジュール管理表に導入している「色を指定するVBA」の使い方についてご紹介してます。
「色を指定するVBA」がスケジュール管理表でどのように使われているか、をご紹介していきます。
点検が完了しているか、未点検の数量はいくつなのか、を一目で確認できるスケジュール管理表を使っています。
管理表の様式はこちら
赤で塗りつぶされたセルの集計を自動化
スケジュール管理表で「色を指定するVBA」が使われている処理がこちら
- 点検が完了していなければ赤で塗りつぶす
- 点検を完了させると塗りつぶしなしにする
- 赤に塗りつぶされているセルの数を集計する
これらの処理をVBAを使って完全自動化しています。
スケジュール管理表に設定しているコードがこちら
Sub チェック()
gyo = Cells(Rows.Count, 9).End(xlUp).Row
For i = 4 To gyo Step 6
Range(Cells(i, 1), Cells(i + 2, 26)).Interior.Color = RGB(234, 234, 234)
Next
For i = 7 To gyo Step 6
Range(Cells(i, 1), Cells(i + 2, 26)).Interior.Color = xlNone
Next
For i = 4 To gyo Step 3
If Right(Cells(i, 22), 2) = "予定" Or Right(Cells(i, 22), 2) = "未定" Then
Range(Cells(i, 22), Cells(i + 2, 22)).Interior.Color = RGB(255, 0, 0)
Else
End If
Next
Dim NUM As Long
NUM = 0
For i = 4 To gyo Step 3
If Range(Cells(i, 22), Cells(i + 2, 22)).Interior.Color = RGB(255, 0, 0) Then
NUM = NUM + 1
Else
End If
Next
Cells(gyo + 3, 22) = NUM
End Sub
VBAを導入することで、「編集作業の短縮」「編集ミスの防止」「点検漏れ防止」というメリットがあります。
手作業でセルを塗り潰す処理をしてもいいのですが、
編集に時間がかかるデメリット以上に編集ミスによる点検漏れを発生させお客さんに迷惑をかけるというデメリット防止のためにVBAを導入しています。
チェック作業でセルの色を塗り潰すことがあるという方はVBAによる自動化が絶対におすすめです。
エクセル業務の効率をアップさせるVBAスキルを身につけるには
この記事で紹介した、「色を指定するVBA」を扱えるようになるだけでもエクセル業務の効率を格段なやアップさせることができます。
- 塗りつぶされたセルを一つ一つ数える
- 文章中の色が変化したテキストを一つ一つ切り取る
- 罫線の色を一つ一つ修正する
このようなアナログ作業を自動化することができます。
このように感じる方がいらっしゃると思います。
ですが、
「色を指定するVBA」は基礎的な勉強をするだけで十分扱うことができるコードなんです。
なので、
VBAの基礎的な勉強をするだけですぐに仕事に応用させることができる。
エクセル業務が多い方にとってVBAスキルは必須事項である!と私は思います。
私がおすすめするVBA学習方法は、
VBA参考書とプログラミングスクール両方を使って勉強する
です。
マメBlogで配信しているメルマガでは、
「プログラミング初心者が効率的にVBA学習を始める方法」や「仕事で使えるVBA情報」
を配信しています。
VBA学習に興味のある方は是非メルマガの登録をよろしくお願いします。
ディスカッション
コメント一覧
まだ、コメントがありません