2013-02-06 122 views
-1
For Each c1 In ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible) 
If cl.Interior.ColorIndex = 16 Then 

MsgBox "Error in " & c1.Address 
Exit Sub ' To step out after first error 
End If 
Next 
End Sub 

我有這樣的代碼,其搜索我的片色指數16的非隱藏細胞..搜索片,多重標準

不過,我想添加第三個條件:SpecialCells(xlCellTypeBlanks)

所以該消息僅在滿足3個標準時出現。

您的想法是讚賞,

感謝

回答

1

試試這個:If c1.Interior.ColorIndex = 16 And c1.Value2 = vbNullString Then

+0

BTW有一個在你的代碼中的錯字 - 在這一行,你有'cl',而不是'c1'。 –

+0

是的這是工作,雖然我有未預見到的問題,由於條件格式,似乎改變了單元格的顏色,但仍保留原來的顏色索引.. IE一些單元格不應再由我們的代碼檢查,但仍列爲代碼24 !有沒有辦法改變這個? – user1717622

0

首先,使用Option Explicit!通過這種方式,您可以像在代碼中一樣防止混淆clc1!此外,它使用縮進使您的代碼更易於閱讀的最佳做法。

你可以實現你想用什麼Application.Intersect

 
Option Explicit 

Private Sub FindErrors() 
    Dim c As Range 
    For Each c In Application.Intersect(_ 
     ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible), _ 
     ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks)) 

     If c.Interior.ColorIndex = 16 Then 
      c.Activate 
      MsgBox "Error in " & c.Address 
      Exit Sub 
     End If 
    Next c 
End Sub