【问题标题】:How to check If every Cell in Range found on another Range using Excel VBA?如何使用 Excel VBA 检查 Range 中的每个单元格是否在另一个 Range 上找到?
【发布时间】:2021-06-03 20:18:20
【问题描述】:

我在同一工作簿中有 Worksheets("North").Range("B3:B500") 上的数据和 Worksheets("Auto").Range("A2:A22") 上的数据。 如何检查第一个 Range 中的每个 Cell 是否在第二个 Range 上找到,如果存在,是否会运行一些代码(Offset)?

下面这行代码的问题: 如果 Cell.value = Worksheets("Auto").Range("A2:A22") 那么

Sub Check_Range()

Dim WorkOrder As Range
Dim Closed_Data As Range
Dim Cell As Object

Set WorkOrder = Worksheets("North").Range("B3:B500")

Set Closed_Data = Worksheets("Auto").Range("A2:A22")

     For Each Cell In WorkOrder
    
        If Cell.value = Worksheets("Auto").Range("A2:A22") Then
        
         Cell.Offset(, 6).value = "Close"
         Cell.Offset(, 7).value = Now

        End If
    Next Cell
    
End Sub

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    无法将一个单元格的值与一个范围进行比较。试试这个代码:

    Sub Check_Range()
    
        Dim WorkOrder As Range
        Dim Closed_Data As Range
        Dim Cell As Object
        
        Set WorkOrder = Worksheets("North").Range("B3:B500")
        Set Closed_Data = Worksheets("Auto").Range("A2:A22")
            
        On Error Resume Next
        For Each Cell In WorkOrder
            With Cell
                WorksheetFunction.Match .Value, Closed_Data, 0  'value search
                If Err.Number = 0 Then  ' if there is no error, then the value was found
                    .Offset(, 6).Value = "Close"
                    .Offset(, 7).Value = Now
                End If
                Err.Clear
            End With
        Next Cell
        On Error GoTo 0
    End Sub
    

    【讨论】:

    • 创建Variant 变量而不是On Error Resume Next 看起来更好,能够保留Match 函数结果。 Dim mtch,然后是 mtch =Application.Match(.Value, Closed_Data, 0)。然后检查它If not IsError(mtch) Then(或If IsNumeric(mtch) Then)。在上面的代码中不会发生任何错误,但如果代码更复杂并且在On Error Resume NextOn Error GoTo 0 之间执行其他操作,则代码可能会跳过最终错误,从而产生一些调试问题。我的意思是,我认为培养以推荐方式使用它的习惯会很好。但不是强制性的
    • @FaneDuru.kindly 你能把你的建议放在代码上吗(重写它)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-10
    • 1970-01-01
    相关资源
    最近更新 更多