非表示にできる< 目次 >
はじめに
EXCEL VBAで,EXCELのセルの色を変更する方法に触れたいと思います。
Crowd Worksでは、Webスクレイピングによるデータ抽出の依頼が多いですが、データ抽出後の貼付先として、新規追加シートを選ばれるケースが多いです。
その際に、見栄えを気にすると セルに色をつけたい場合があると思います。
本ブログ記事では、Crowd Works で納品まで行い、実際にお金になったコードを元に紹介しておりますので、このやり方で覚えればOKだと思います。
本記事でできること
任意のEXCELのセルに色を付与することができます。
これにより、視認性があがります。
Interior.colorプロパティの使用方法
任意のEXCELを指定し、Interior.color = RGB(0~255,0~255,0~255) でセルに色が付与されます。
↓のコードが一例です。
1 2 |
'既にアクティブな状態のEXCELなら Cellsから始めてもセル色はつくはずです。 Cells(1, 1).Interior.Color = RGB(255, 255, 0) 'RGB(255,255,0)は黄色 |
セルに色をつける方法(3つ紹介)
セルに色をつけるInterior.colorプロパティはわかったが、対象EXCELをどのように掴めばよいのかが難しく感じるポイントだと思います。
(1)現在操作しているEXCELを制御する
VBE上で実際に標準モジュールを格納するEXCELファイルは、
ThisWorkbookで制御可能です。
文字通り、"このワークブック"とVBA上は認識してくれます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
'【パターン①】 '現在操作しているEXCELを制御する Sub a() 'ThisWorkbook :標準モジュールを設置したEXCELが対象 'Worksheets("任意のシート名"):対象EXCELシートを選択 'Interior.Color :セルの色のプロパティ ' = RGB(数値,数値,数値) :色を指定 ThisWorkbook.Worksheets("sheet1").Cells(1, 1).Interior.Color = RGB(255, 0, 0) 'RGB(255,0,0)は赤色 End Sub |
(2)既に開いているEXCELファイルを制御する
↓のコードでは、既に開いているEXCELファイルの制御を紹介しています。
このコードではパソコンのタスクバーにあるEXCELを制御下に置くことができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
'【パターン②】 '別EXCELファイルを制御する '(既にタスクバーに対象EXCELが開いている状態) Sub b() '変数を用意 Dim wb1 As Workbook '★重要★ '用意した変数wb1の型はオブジェクト(object)に該当するため、 '変数格納時は Set 変数 = の形でセットする。 Set wb1 = Workbooks("EXCEL.xlsx") '操作したいEXCELファイル名に差替てあげる。(既に開いている状態を想定) 'wb1に格納された"EXCEL.xlsx"のシート名sheet1のA1セルの色を黄色にする の意味 wb1.Worksheets("sheet1").Cells(1, 1).Interior.Color = RGB(255, 255, 0) 'RGB(255,255,0)は黄色 End Sub |
(3)未だ開いてないEXCELファイルを制御する
1からEXCELファイルを開き、それを制御するコードとなります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
'【パターン③】 '別EXCELファイルを制御する '((制御対象EXCELが開いていない状態)) Sub c() '変数を用意 Dim wb1 As Workbook '対象EXCELを開く 'Openメソッドで対象ディレクトリのEXCELを開きます。 Workbooks.Open "W:\Desktop\\EXCEL.xlsx" '←制御対象EXCELのディレクトリ情報を入れてあげる '変数格納時は Set 変数 = の形でセットする。 Set wb1 = Workbooks("EXCEL.xlsx") '操作したいEXCELファイル名に差替てあげる。(既に開いている状態を想定) '参考:Openメソッドで開いた直後なら、 ' 対象EXCELはアクティブになっているため、 ' 以下の式でも対応可能 ' Set wb1 = ActiveWorkbook 'wb1に格納された"EXCEL.xlsx"のシート名sheet1のA1セルの色を黄色にする の意味 wb1.Worksheets("sheet1").Cells(1, 1).Interior.Color = RGB(255, 0, 255) 'RGB(255,0,255)は紫色 End Sub |
おわりに
いかがでしたでしょうか。
VBAで難しいと感じることは、対象のファイルを制御下に置くことだと思います。制御下にさえおいてしまえば、「マクロを記録する」で記録したマクロを切りあわせて、VBAコードを作成する手間は格段に減ると思います。
僕個人が思う、初心者がVBAでのコーディングスピードを上げるコツは、「マクロを記録する」をどれだけ使いこなせるかだと思います。
慣れてしまえば、スマートなコードを早く作ることができますが、はじめは自分のやりたいことが出来れば良いと思っています。
難しいことは慣れてからで良いと思います。