アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。
条件付き書式で設定できることは承知ですが、マクロを使って条件と一致するセルの背景を
塗りつぶすプログラムについて質問です。
例えば、シートのB列、C列に取得したデータを入力して、D列、E列にB列の最大値、最小値を
関数を使って計算してあります。
B列はD列の最大値を参照して最大値を塗りつぶし、C列はE列の最小値を参照して最小値を塗りつぶす
下記のマクロを組みましたが、下記の様に条件が一致する数値が同じ行にあるとC列の塗りつぶしが
実行されません。
どこの記述が間違っているのでしょうか。ご教授お願い致します。

<データ>

   B列 C列   D列      E列
1 5 30   B列の最大値  C列の最小値
2 10 35
3 15 50
4 20 45
5 25 15


<プログラム>
sub test()
Dim i As Integer
i = 2
Do While i < 7

'A列の最大値を塗りつぶす
If Cells(i, 2).Value = Cells(2, 4) Then
Cells(i, 2).Interior.ColorIndex = 16

'B列の最小値を塗りつぶす
ElseIf Cells(i, 3).Value = Cells(2, 5) Then
Cells(i, 3).Interior.ColorIndex = 16
End If
i = i + 1
Loop

end sub

A 回答 (3件)

No1.No2の方の指示に従い、修正してみました。

(コメントも誤っていたので修正しました。)
Cells(2,4)の参照はCells(2,4).Valueとしました。(Cells(2,5)も同様)
-------------------------------
Sub test()
Dim i As Integer
i = 2
Do While i < 7

'B列の最大値を塗りつぶす(A列->B列)
If Cells(i, 2).Value = Cells(2, 4).Value Then
Cells(i, 2).Interior.ColorIndex = 16
End If
'C列の最小値を塗りつぶす(B列->C列)
If Cells(i, 3).Value = Cells(2, 5).Value Then
Cells(i, 3).Interior.ColorIndex = 16
End If
i = i + 1
Loop

End Sub
    • good
    • 1
この回答へのお礼

皆様、回答ありがとうございます。
お礼が遅くなりました。
解決致しました。

お礼日時:2016/11/05 21:09

お疲れさまです。


No1さんの回答と同じです。

ElseIfはifの判定が違った場合に実行されます。

なので、最大値を塗り潰しが終わると、実行されません。
    • good
    • 0

elseifを使わず、2つに分けてね。


元々、別物の判定でしょ?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!