マクロ記録でVBA
セルに色を塗る

Excelマクロの自動記録を使って、エクセルVBAの初心者向け入門解説
公開日:2013年5月以前 最終更新日:2013-02-18

第12回.セルに色を塗る


今回はちょっと難しいことをします。


100マス計算に手入力で回答を入れて、その結果の成否を判定してみましょう。



100マスの計算結果を一旦全て消して下さい。


手入力で、回答を入れて下さい。


掛け算九九は大丈夫ですか(笑)


全部入れなくて良いです。


いくつかは、正しい答えを入れ、いくつかは、間違った答えを入れましょう。


えっ、普通に答えても間違えてしまう・・・グッドです。


マクロで、間違いは赤、未回答は黄色にセルを塗ってみましょう。


以下のようにします。


Excel VBA 解説

ふふふ、間違え方が自然でしょう、本当に間違えていたりして(笑)


まず、色の塗り方ってどうするのか。


まさに、「マクロの記録」の出番です。


1.マクロの記録

2.D3を選択

3.黄色にする

4.F7を選択

5.赤色にする

6.記録終了


作成されたマクロは、


Sub Macro2()
'
' Macro2 Macro
'

'
  Range("D3").Select
  With Selection.Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .Color = 65535
    .TintAndShade = 0
    .PatternTintAndShade = 0
  End With
  Range("F7").Select
  With Selection.Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .Color = 255
    .TintAndShade = 0
    .PatternTintAndShade = 0
  End With
End Sub


なんだか、とっても長いですね。



まず、With~End Withの説明です。

これは、マクロの記録ではよく出てくる記述になります。


With ○○○

  .△△△

  .□□□

End With
これは、

○○○.△△△

○○○.□□□

と書いたことと同じになります。

このWithを使うことで、記述を簡潔にし、かつ、処理スピードが速くなります。

先頭の「.」が重要です!


そして、

★★★.Select

With Selection.○○○

・・・

End With
これは、

With ★★★.○○○

・・・

End With

とSelectionを、Selectしている対象に変更すれば良いです。


不要部分を消し込むと、



Sub Macro2()

  With Range("D3").Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .Color = 65535
    .TintAndShade = 0
    .PatternTintAndShade = 0
  End With
  With Range("F7").Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .Color = 255
    .TintAndShade = 0
    .PatternTintAndShade = 0
  End With
End Sub


まだ、長いですね。


セルに色を塗るのに必要なものは、


.Color = 数字


だけです、他は網掛け等の指定になりますので、今回は不要です。


従って、


Sub Macro2()

  Range("D3").Interior.Color = 65535
  Range("F7").Interior.Color = 255
End Sub


これだけで良いということになります。


とても、すっきりしちゃいましたね。


カラーの数値については、そのまま受け入れましょう。


基本色は、文字定数がありますが、


マクロの記録を使えば、様々な色が使用できますので、そのまま使用すれば良いでしょう。




さて、色の塗り方がわかったところで、本題のプログラムに移ります。




Sub Macro1()
  Dim i
  Dim j
  i = 2
  Do While i <= 11
    j = 2
    Do While j <= 11
      If Cells(i, j) = "" Then
        Cells(i, j).Interior.Color = 65535
      Else
        If Cells(i, j) <> Cells(i, 1) * Cells(1, j) Then
          Cells(i, j).Interior.Color = 255
        End If
      End If
      j = j + 1
    Loop
    i = i + 1
  Loop
End Sub


説明が必要なのは、太字の部分だけですね。


If Cells(i, j) = "" Then
セルが空白かの判定をしています。


Cells(i, j).Interior.Color = 65535
セルを黄色にしています。


If Cells(i, j) <> Cells(i, 1) * Cells(1, j) Then
セルの値が、正解と同じかを判定しています。


Cells(i, j).Interior.Color = 255
セルを赤色にしています。


If 条件 Then

  真の場合の処理

Else

  偽の場合の処理

End If

初めて出てきました。

条件分岐と言ったりします。

条件が真(True)の場合は、すぐ下の処理、

偽(False)の場合は、Else以下の処理を実行します。


これは、ワークシート関数のIF関数と、同じ考え方です。

ワークシート関数では、

=IF(条件, 真(True), 偽(False))

これと全く同じ考え方です。

ワークシート関数で、IF関数を使える方には、違和感がないでしょう。





同じテーマ「マクロの記録でVBA」の記事

第9回.計算式をコピーする
第10回.計算結果を入れる
第11回.イミディエイトで値の確認
第12回.セルに色を塗る
第13回.罫線を引く
第14回.行列を入れ替えて貼り付け
第15回.いろいろな消去
第16回.行の挿入・削除
第17回.並べ替え
第18回.オートフィルタ
第19回.オートフィルタ2


新着記事NEW ・・・新着記事一覧を見る

Gemini CLIの徹底解説:AIをターミナルから使いこなす|生成AI活用研究(2025-07-03)
Gemini CLIとPowerShellでVBAerのAI活用を加速する実践ガイド|生成AI活用研究(2025-07-02)
「Gemini CLI」によるExcel自動化フレームワーク:実践ガイド|生成AI活用研究(2025-07-01)
AI(Gemini)とエクセル数式対決 その3|生成AI活用研究(2025-06-24)
不合理の砦|AIが計算を終えた場所から、人間の価値が始まる|生成AI活用研究(2025-06-23)
生成AIはExcelの複雑な数式を書けるのか?|AIとの対話から学ぶ協業のリアル|生成AI活用研究(2025-06-22)
日時データから日付ごとの集計(UNIQUE,SUMIFS,GROUPBY)|エクセル雑感(2025-06-20)
AI時代の働き方革命:オンリーワン戦略 ― 属人化で搾取されない労働者に|生成AI活用研究(2025-06-20)
VBA開発の標準化を実現する共通プロンプトのすすめ|生成AI活用研究(2025-06-14)
生成AIと100本ノック 29本目:画像の挿入|生成AI活用研究(6月13日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.変数宣言のDimとデータ型|VBA入門
3.繰り返し処理(For Next)|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.RangeとCellsの使い方|VBA入門
6.FILTER関数(範囲をフィルター処理)|エクセル入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
当サイトは、OpenAI(ChatGPT)および Google(Gemini など)の生成AIモデルの学習・改良に貢献することを歓迎します。
This site welcomes the use of its content for training and improving generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ