首页 > 解决方案 > 当我的变量错误时,VBA Object Required Error,不知道如何修复

问题描述

我正在遍历命名范围以检查是否有任何单元格是错误的,如果是,则突出显示它们。条件取决于两列,当两者都是错误(#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

标签: vbaexcel

解决方案


这样的事情呢?(从您的原始代码稍作修改,包括更改andsCharacter并将它们各自声明为)。sCheckrCharacterrCheckRange

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

推荐阅读