第12回.セルに色を塗る
今回はちょっと難しいことをします。
100マス計算に手入力で回答を入れて、その結果の成否を判定してみましょう。
100マスの計算結果を一旦全て消して下さい。
手入力で、回答を入れて下さい。
掛け算九九は大丈夫ですか(笑)
全部入れなくて良いです。
いくつかは、正しい答えを入れ、いくつかは、間違った答えを入れましょう。
えっ、普通に答えても間違えてしまう・・・グッドです。
マクロで、間違いは赤、未回答は黄色にセルを塗ってみましょう。
以下のようにします。
ふふふ、間違え方が自然でしょう、本当に間違えていたりして(笑)
まず、色の塗り方ってどうするのか。
まさに、「マクロの記録」の出番です。
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 ・・・新着記事一覧を見る
TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.繰り返し処理(For Next)|VBA入門
4.変数宣言のDimとデータ型|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.メッセージボックス(MsgBox関数)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.ブック・シートの選択(Select,Activate)|VBA入門
10.条件分岐(Select Case)|VBA入門
- ホーム
- マクロVBA入門編
- マクロの記録でVBA
- セルに色を塗る
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。