我正在遍历命名范围以检查是否有任何单元格错误,如果是,请突出显示它们。条件取决于两列,并且当两者均为错误(#NA)时,代码将不起作用。我该如何解决?
当sCharacter和sCheck为
For i = 10 To 16
sCharacter = ws_Sheet1.Range("A" & i)
sCheck = ws_Sheet2.Range("B" & i)
If IsError(sCharacter) And IsError(sCheck) Then
ws_Sheet1.Range("D" & i).Interior.Color = RGB(255, 255, 0)
ws_Sheet1.Range("E" & i).Interior.Color = RGB(255, 255, 0)
Else
End If
If IsError(sCharacter) And sCheck = "Y" Then
ws_Sheet1.Range("D" & i).Interior.Color = RGB(255, 255, 0)
ws_Sheet1.Range("E" & i).Interior.Color = RGB(255, 255, 0)
Else
End If
Next i
答案 0 :(得分:1)
这样的事情呢? (从您的原始代码稍作修改,包括将sCharacter
和sCheck
更改为rCharacter
和rCheck
,并将它们分别声明为Range
。)
Sub Test()
Dim l As Long
Dim ws_Sheet1 As Worksheet, ws_Sheet2 As Worksheet
Dim rCharacter As Range, rCheck As Range
Set ws_Sheet1 = Sheets("Sheet1")
Set ws_Sheet2 = Sheets("Sheet2")
For l = 10 To 16
Set rCharacter = ws_Sheet1.Range("A" & l)
Set rCheck = ws_Sheet2.Range("B" & l)
If IsError(rCharacter) And IsError(rCheck) Then
ws_Sheet1.Range("D" & l & ":E" & l).Interior.Color = RGB(255, 255, 0)
End If
If IsError(rCharacter) And rCheck.Text = "Y" Then
ws_Sheet1.Range("D" & l & ":E" & l).Interior.Color = RGB(255, 255, 0)
End If
Next l
End Sub
答案 1 :(得分:1)
重新键入用于检查变体错误的变量,将使您可以使用IsError()
函数来检查错误。使用Cstr()
将变量转换为字符串将使您能够测试字符串值而不会引发Error 13 Type mismatch
错误。
Sub Demo()
Dim vCharacter As Variant, vCheck As Variant
Dim ws_Sheet1 As Worksheet, ws_Sheet2 As Worksheet
Set ws_Sheet1 = Sheet1
Set ws_Sheet2 = Sheet2
For i = 10 To 16
vCharacter = ws_Sheet1.Range("A" & i)
vCheck = ws_Sheet2.Range("B" & i)
If IsError(vCharacter) And (IsError(vCheck) Or CStr(vCheck) = "Y") Then
ws_Sheet1.Range("D" & i).Resize(1, 2).Interior.Color = RGB(255, 255, 0)
End If
Next i
End Sub