Excel VB在没有找到值时删除行

时间:2017-05-10 12:25:35

标签: excel vba excel-vba

我正在设计一个小工作簿,以便在分配时在工作表之间移动工作。我写了一个小代码,它应该从A7行开始扫描一个关键字,然后根据该值将该行移动到Sheet 5或Sheet 6。

但是,现在我已经为代码添加了更多自动过滤器,脚本似乎是从a1中删除行并将它们移动到错误的图纸5和6,这会破坏格式化。我复制了5个不同关键字的代码,这可能是错误发生的地方......有谁知道为什么?

Sub CommandButton1_Click()

Application.ScreenUpdating = True
Columns(11).AutoFilter 1, "ORNC"
With Range("a7", Range("K" & Rows.Count).End(3))
    .Copy Sheet6.Cells(Rows.Count, 1).End(3).Offset(1)
    .EntireRow.Delete
End With
Columns(11).AutoFilter

Application.ScreenUpdating = True
Columns(11).AutoFilter 1, "ORCIF"
With Range("a7", Range("k" & Rows.Count).End(3))
    .Copy Sheet5.Cells(Rows.Count, 1).End(3).Offset(1)
    .EntireRow.Delete
End With
Columns(11).AutoFilter
Application.ScreenUpdating = True

 Application.ScreenUpdating = True
Columns(11).AutoFilter 1, "OP Write Off"
With Range("a7", Range("k" & Rows.Count).End(3))
    .Copy Sheet5.Cells(Rows.Count, 1).End(3).Offset(1)
    .EntireRow.Delete
End With
Columns(11).AutoFilter
Application.ScreenUpdating = True

Application.ScreenUpdating = True
Columns(11).AutoFilter 1, "LO Write Off"
With Range("a7", Range("k" & Rows.Count).End(3))
    .Copy Sheet5.Cells(Rows.Count, 1).End(3).Offset(1)
    .EntireRow.Delete
End With
Columns(11).AutoFilter
Application.ScreenUpdating = True

Application.ScreenUpdating = True
Columns(11).AutoFilter 1, "Not a Recon"
With Range("a7", Range("k" & Rows.Count).End(3))
    .Copy Sheet5.Cells(Rows.Count, 1).End(3).Offset(1)
    .EntireRow.Delete
End With
Columns(11).AutoFilter
Application.ScreenUpdating = True


End Sub

如您所见,脚本应该从第7行开始在K列中查找其中一个关键字,然后根据其返回值移至工作表5/6。

非常感谢任何帮助。

格雷姆

0 个答案:

没有答案