2017-11-30 20 views
0

私は、それが一致するブランクの色も変わるという点を除いて、まさにそれをしたいコードを書いています。空白のセルがマークされていないように、コードに何を追加できるのだろうかと思います。ブランクセルを無視する

beginrow = 2 
First = 0 
FirstLast = 0 
Second = 0 
SecondLast = 0 

For z = 2 To finalrow 
    If Cells(z, 9).Value = Cells(1 + z, 9).Value And Cells(z, 10).Value <> Cells(1 + z, 10).Value And Cells(z, 12).Value = Cells(1 + z, 12).Value Then 
     First = z 
     FirstLast = First + 1 
    End If 
    If Cells(z, 9).Value = Cells(1 + z, 9).Value And Cells(z, 12).Value <> Cells(1 + z, 12).Value Then 
      Second = z 
      SecondLast = Second + 1 
      endKnown = True 
    End If 
    If endKnown = True Then 
     For arownumber = beginrow To First 'need to find the rownumbers that we compare with 
      For change = 4 To 7 
       For smrownumber = FirstLast To Second 'need to find the rownumbers for comparing 
        For across = 4 To 7 
         CellA = Cells(arownumber, change) 
         CellB = Cells(smrownumber, across) 
         match = IIf(CellA = CellB, "yes", "no") 
         If match = "yes" Then 
          Cells(arownumber, change).Interior.ColorIndex = 3 
          Cells(smrownumber, across).Interior.ColorIndex = 3 
         End If 
        Next across 
       Next smrownumber 
      Next change 
     Next arownumber 
     endKnown = False 
     If SecondLast <> 0 Then 
      beginrow = SecondLast 
     End If 
     End If 
Next z 

答えて

1

あなたCellsオブジェクトのプロパティInteriorColorIndexを変更する前に、空のコンテンツをチェックする必要があります。

'If your cell isn't empty then change background color 
If(Cells(arownumber, change).Value <> "") Then 
    Cells(arownumber, change).Interior.ColorIndex = 3 
End If 

'If your cell isn't empty then change background color 
If(Cells(smrownumber, across).Value <> "") Then 
    Cells(smrownumber, across).Interior.ColorIndex = 3 
End If 

Cellsは条件が実行される前に、あなたはこのようなもので物事を単純化する可能性が一致している必要があるので:

'If your cell isn't empty then change background color 
If(Cells(arownumber, change).Value <> "" And Cells(smrownumber, across).Value <> "") Then 
    Cells(arownumber, change).Interior.ColorIndex = 3 
    Cells(smrownumber, across).Interior.ColorIndex = 3 
End If 
+0

私が間違っているかもしれないが、私は、ユーザーが '一致= IIf関数(内陣= CELLB、 "はい"、 "いいえ")を参照している推測' :) –

+0

@SiddharthRoutます実際には正しいかもしれない。両方の方法が正しいです。背景を変更する前に空であるかどうかをチェックしている間に、空のセルに一致しないように選択します:)両方のソリューションが彼のために働くと思います。 – Teasel

+0

もしそれらの1つが空白ならば、それを別にすればそれの色が変わらないでしょうか?私が理解したのは、彼らが両方とも一致していて空でないか、まったく色付けされていない場合にそれらを色づけることでした...とにかくOPが望んでいるものを見てみましょう...私は間違っているかもしれないと言ったように:D –

1

あなたはこのように意味ですか?

match = IIf((CellA = CellB) And (CellA <> ""), "yes", "no") 

代わりの

match = IIf(CellA = CellB, "yes", "no") 
関連する問題