You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA匹配另一工作表列值后清除指定行单元格内容报错求解

VBA代码问题排查与修正

原代码核心错误

  • 匹配列引用错误:需求判断Sht1的T列(第20列)值是否匹配目标范围,原代码Cells(x, 1)实际引用A列,列号匹配错误。
  • 范围匹配逻辑错误:不能直接用单元格值等于多单元格范围的方式判断值是否存在,需调用工作表函数实现存在性校验。
  • 工作表对象绑定缺失:Range("J" & x & ":K" & x)前未加.,未绑定到Sht1,当激活工作表不是Sht1时会操作错误单元格。
  • 方法参数误用:ClearContents为单元格内容清空方法,无Shift参数,该参数属于Delete方法,多余参数会触发运行时错误。

修正后可运行代码

Sub Delete_Picklist_Rec()
    Dim Sht1 As Worksheet, Sht2 As Worksheet
    Dim LstRw As Long, lookup_rng As Range, x As Long

    Set Sht1 = Sheets("Pick Ticket Schedule")
    Set Sht2 = Sheets("Pick Ticket (History)")
    Set lookup_rng = Sht2.Range("B2:B7")

    With Sht1
        LstRw = .Cells(.Rows.Count, "T").End(xlUp).Row
        MsgBox "LstRw:" & LstRw
        ' 若第1行为表头,可将循环起始值改为2
        For x = LstRw To 1 Step -1
            ' 校验当前行T列值是否存在于Sht2指定范围
            If WorksheetFunction.CountIf(lookup_rng, .Cells(x, "T").Value) > 0 Then
                ' 清空当前行J、K列内容
                .Range("J" & x & ":K" & x).ClearContents
            End If
        Next x
    End With
End Sub

内容的提问来源于stack exchange,提问作者Paul Yang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 03:27:03