我正在尝试创建一个循环,删除所有没有这两个值的单元格:" OI"或者" SI"。
当我执行宏时,我得到:
删除范围类失败的方法
我弄清楚了,因为它试图删除标题。
如何避免删除标题?
Sub DeleteValues()
Dim i As Integer
Dim MFG_wb As Workbook
Dim Dep As Integer
Set MFG_wb = Workbooks.Open _
("C:\Users\rosipov\Desktop\eliran\MFG - GSS\MFG Daily\Fast Daily " & Format(Now(), "ddmmyy") & ".xlsx", _
UpdateLinks:=False, IgnoreReadOnlyRecommended:=True)
MFG_wb.Sheets("Aleris").Activate
Dep = MFG_wb.Sheets("Aleris").Range("O2").End(xlDown).Row
For i = Dep To 1 Step -1
Cells(i, 15).Select
If Not (Selection.Value = "SI" Or Selection.Value = "OI") Then
Rows(i).Delete
End If
Next i
End Sub
答案 0 :(得分:3)
请勿尝试删除顶行
而不是For i = Dep To 1 Step -1
,请使用:
For i = Dep To 2 Step -1
答案 1 :(得分:2)
你不能删除有表头的行,你必须在一个间隔中转换表然后删除它。或者只是在接下来的错误恢复中:
Sub DeleteValues()
Dim i As Integer
Dim MFG_wb As Workbook
Dim Dep As Integer
Set MFG_wb = Workbooks.Open _
("C:\Users\rosipov\Desktop\eliran\MFG - GSS\MFG Daily\Fast Daily " &
Format(Now(), "ddmmyy") & ".xlsx", _
UpdateLinks:=False, IgnoreReadOnlyRecommended:=True)
MFG_wb.Sheets("Aleris").Activate
Dep = MFG_wb.Sheets("Aleris").Range("O2").End(xlDown).Row
On Error Resume Next
For i = Dep To 1 Step -1
If Not (Cells(i, 15).Value = "SI" Or Cells(i, 15).Value = "OI") Then
Cells(i, 15).EntireRow.Delete
End If
Next i
End Sub
答案 2 :(得分:2)
您需要修复循环条件。 从 1 到 2
For i = Dep To 2 Step -1
Cells(i, 15).Select
If Not (Selection.Value = "SI" Or Selection.Value = "OI") Then
Rows(i).Delete
End If
Next i
例如:如果 Dep 5 。循环将减少,直到 Dep 1 。之后,它将递减到 0 ,它将跳出循环。 所以你必须将循环条件设置为 2 ,这样当他到达标题行时它会退出循环。