【发布时间】:2018-06-11 06:09:37
【问题描述】:
我正在尝试运行此宏以在删除行后将数据上移到多张工作表上。我不断收到编译错误
如果没有阻塞则结束
这是我的 VBA 代码:
Sub shiftmeup()
Dim ws As Worksheet
Dim wb As Workbook
Set wb = ThisWorkbook
Set ws = wb.Sheets("contactunder") '/// The underhood of my contacts
Set ws1 = wb.Sheets("Deposits")
Set ws2 = wb.Sheets("Lending")
Set ws3 = wb.Sheets("Client Notes")
With ws.Range("D11:BJ392")
For i = .Rows.Count To 1 Step -1
If IsEmpty(.Cells(i, 1)) Then .Rows(i).Delete Shift:=xlUp
Next
With ws1.Range("E11:l392")
For i = .Rows.Count To 1 Step -1
If IsEmpty(.Cells(i, 1)) Then .Rows(i).Delete Shift:=xlUp
Next
With ws2.Range("E11:Y392")
For i = .Rows.Count To 1 Step -1
If IsEmpty(.Cells(i, 1)) Then .Rows(i).Delete Shift:=xlUp
Next
With ws3.Range("E11:E392")
For i = .Rows.Count To 1 Step -1
If IsEmpty(.Cells(i, 1)) Then .Rows(i).Delete Shift:=xlUp
End If
Next
End With
End Sub
【问题讨论】:
-
总是正确地格式化和缩进你的代码,否则你看不到你的问题(我在你的问题中为你做了)。现在您看到前 3 个
With没有End With。还有一个End If太多了,因为你所有的If语句都是1-liners,然后不需要End If。 • 此外,我建议使用描述性变量名称而不是ws1、ws2、... -
+前三个if也没有end if
-
@Pierre44 1-liner
If语句不允许有End If。第4个With中的End If太多了,需要去掉。 -
@Pᴇʜ 你是对的,先生。我删除了最后一个 End if 并在最后添加了 3 个“End With”,我的代码现在运行正确!感谢您的所有帮助!