2017-12-11 12 views
0

この質問は以前に聞かれましたが、別の方法でやっていました。私はそれが別のセルの値よりも大きい場合、セルを強調表示しようとしています。ここで別のセルの値に基づいてセルを強調表示する方法VBA?

は私のコードです:

Sub Error_Search() 

Dim Summary As Worksheet 
Dim lr As Long 
Set Summary = Worksheets("Summary") 


      lr = Cells(Rows.Count, 20).End(xlUp).Row 

    With Summary 

      For i = lr To 3 Step -1 

      If Range("L" & i).Value > Range("$Q$2:$R$3").Value Then Range("L" & i).Font.Color = -16776961 

      Next i 

    End With 

End Sub 

レンジ(「$ Q $ 2:$のR $ 3」)マージされたセルであり、それは私が私が強調表示したいセルを比較したいセルです。

不一致エラーが発生し続けます。

ご協力いただければ幸いです。

おかげで、

G

+5

Range( "$ Q $ 2")と比較するとどうなりますか? - 左上の方が話すように – QHarr

+5

^^^問題はマージされたセルで、値は左上のセルに保存されます。他はすべて空白です。したがって、Range( "L"&i).Value> Range( "$ Q $ 2:$ R $ 3").Valueを試すと、1つのセルと4のバリアント配列の間で論理演算子を使用しようとしています。それは好きではありません。そのため、結合されたセルの左上のセルを使用してください。 –

+1

今日の第2の質問は、最初に書かれたはずのはずのコードです。これは、VBAコードではなく、条件付き書式設定の仕事です。 –

答えて

1

コメントで述べたように、問題は、セルが結合されている場合でも、単一Valueを持っていないRange複数のセルということです:Range.Valueは、2Dのバリアントを生成します1つ以上の細胞が関与する場合はいつでも配列することができます。したがって、マージされた範囲の左上のセルを参照するだけでバグを修正できます。

これは...

これを行うには、VBAコードは必要ありません。条件付き書式設定はそれをきれいに処理します。

Conditional format formula: =$C4>$M$3

=$C4>$M$3 

注$ドル記号:$M$3は、あなたのマージされたセル(唯一の左端のセルの事項)になり、そして$C4はあなたが条件付き書式を定義しているだけの最初のセルでありますに;非絶対行(行数に、すなわちない$)を残して、あなたが指定することにより、細胞の全範囲に書式を適用することを可能にする範囲に適用:

cells in $D:$L where $C is greater than $M$3 are highlighted

なお、フォーマット式$ M $ 3または$ M $ 3のマージされたセルを見ているかどうかにかかわらず同じです。

条件付き書式は、書けるVBAコードよりも優れたパフォーマンスを発揮します。

関連する問題