|
|
| Excel VBA Macro ・ セル制御 ・ FAQ |
|
別シートの対応するセルが空白ならフォント色を変更するには?
|
|
|
|
Question 78.1 |
|
 |
 |
|
|
どうもはじめまして。 今月より、仕事でVBAを使うことになり、右も左も分からないまま現在VBAでマクロを組んでいます。 その際どうしても解決できない問題があり、非常に困っています。 教えて頂けないでしょうか?
よろしくお願いします。
質問の内容は、シート1・シート2の間で同じカラムの値を検索し、シート1にあってシート2に無い場合に、シート1の値を色を変えて表示するというものです。
ちなみにシート1とシート2のフォーマットは全然違うのですが、そのカラムの値だけは両方のシートで持っています。
|
|
Answer |
Copyright (C) 2006.2.8 永井善王 |
|
|
回答に先立って、ちょっとだけ確認させてください。
ご質問文の中に カラムの値 とありますのは「セルの値」のことであり、検索 とは「調べる」ことだと解釈して進めますが、よろしいでしょうか。
たとえば下図のように、Sheet1の A2セルが
空白でない(値がある)場合に、Sheet2の同じセル(A2)が空白だったら、Sheet1の A2セルのフォントの色を変えるとすると、次のようなマクロで可能になります。
Sub Sheet1の特定セルが空白でなくSheet2の同セルが空白ならフォント色を変更する()
10 セル = "A2" '調査するセルを指定
20 With Worksheets("Sheet1") 'Sheet1について処理
30 If .Range(セル).Value <> "" Then '特定セルの値が空白でなければ
40 If Worksheets("Sheet2").Range(セル).Value = "" Then 'Sheet2の同セルが空白なら
50 .Range(セル).Font.Color = RGB(255, 0, 255) '調査セルのフォント色を設定
60 End If
70 End If
80 End With
End Sub
なお、今月からVBAを始められたということですので少し補足しておきます。
1. 行番号はここでの説明用ですから本番では不要です。(有っても構いません)
2. 30行目の空白セル、50行目のRGB関数などを知りたい場合は、末尾「参考ページ」をご覧ください。
ここではフォント色の設定にRGB関数を使っていますが、カラーパレットのインデックス番号による方法もあります。
3. 20〜80行目の With制御構造は、その間のコードで Worksheets("Sheet1") を省略して書くためのものです。
省略しない書き方は下記のとおりで、どちらも機能は同等です。
Sub 対応するSheet2のセルが空白ならSheet1のセルのフォント色を変更する()
10 セル = "A2"
30 If Worksheets("Sheet1").Range(セル).Value <> "" Then
40 If Worksheets("Sheet2").Range(セル).Value = "" Then
50 Worksheets("Sheet1").Range(セル).Font.Color = RGB(255, 0, 255)
60 End If
70 End If
End Sub
参考ページ
・セルの内容が空白か調べる
・色を指定する
・指定値以下のセルのフォント色を赤にするには
きっと上手くできると思いますから、今後も頑張ってください。 結果をお知らせくださると嬉しいです。
|
|
|
|
|