我在一家汽车公司的物流管理部门工作,我想记录一个宏,该宏使我可以查找包含操作编号的一系列单元格,并删除与零售客户相关的文件(保留车队客户)。
车队操作从01RN92、01RN94、01RR和01RB开始。其他的是零售客户的。
引发错误的部分代码是此部分的if循环:
Dim celda As Object
Dim rng As Range
Set rng = Range("B2:B200")
For Each celda In rng
valor = celda.Value
If valor Like "01RN92*" Or valor Like "01RN94*" Or valor Like "01RB*" Or valor Like "01RR*" Then
celda.Interior.Color = 65535
Else
celda.EntireRow.Delete
End If
Next celda
我需要帮助。我在这里想念什么,怎么解决?
非常感谢。 亲切的问候。
答案 0 :(得分:1)
B列的值的公式错误将导致此问题。以下重做会跳过它们:
Dim rng As Range
Set rng = Range("B2:B200")
For y = rng.Cells.Count To 1 Step -1
With rng.Cells(y)
valor = .Value
If Not (IsError(valor)) Then
If valor Like "01RN92*" Or valor Like "01RN94*" Or valor Like "01RB*" Or valor Like "01RR*" Then
.Interior.Color = VBYellow
Else
.EntireRow.Delete
End If
End If
End With
Next
注意:最好的做法是从下至上而不是从上至下删除,以确保删除应删除的每一行。
答案 1 :(得分:0)
欢迎来到Stackoverflow。您最有可能收到该错误,因为其中一个单元格中存在公式错误。
这里是复制和识别罪魁祸首细胞的简单方法。
b
如上面的注释中所述,逐步执行代码并检查在哪个单元格中遇到该错误。然后物理检查该单元格,看看是否存在任何公式错误,例如“#N / A”,“#DIV / 0!”
答案 2 :(得分:0)
好吧,问题在于某些单元格为#N / A,因为宏的第一部分上有一些公式。
非常感谢,我将继续改进宏以避免出现#N / A并使其完美运行。