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
相关产品推荐
相关产品推荐

