【发布时间】:2017-06-08 10:47:27
【问题描述】:
我一直在编写这个包含三个步骤的宏。 First 是在 C 列和 Second 之后的行为空的情况下删除行步骤是有标题的行必须保留在工作簿中,例如 Contributions-All Other 或 Program Fees-Youth。 第三步是通过在某些标题后添加空格或空行来格式化行。
这是我的代码,它似乎无法编译,我不确定如何防止行被删除...请帮助。
Sub RemoveRowsAndFormat()
Dim WS As Worksheet
For Each WS In Sheets
WS.Activate
Dim n As Long
Dim nlast As Long
Dim rw As Range
Set rw = ActiveWorkbook.ActiveSheet.UsedRange.Rows
nlast = rw.Count
For n = nlast To 9 Step -1
If (rw.Cells(n, 3).Value = "Contributions-All Other" Or rw.Cells(n, 3).Value = "Program Fees - Youth" Or rw.Cells(n, 3).Value = "Financial Assitance" Or rw.Cells(n, 3).Value = "Salaries & Wages" Or rw.Cells(n, 3).Value = "Payroll Taxes" Or rw.Cells(n, 3).Value = "Employee Benefits" Or rw.Cells(n, 3).Value = "Staff Training and Confer." Or rw.Cells(n, 3).Value = "Occupancy" Or rw.Cells(n, 3).Value = "Supplies" Or rw.Cells(n, 3).Value = "Telephone" Or rw.Cells(n, 3).Value = "Postage & Shipping" Or rw.Cells(n, 3).Value = "Promotion and Advertising" Or rw.Cells(n, 3).Value = "Bad Debt" Or rw.Cells(n, 3).Value = "Program Operating Expense" Or rw.Cells(n, 3).Value = "Program Operating Net") Then
rw.Rows(n).EntireRow.Insert
ElseIf (rw.Cells(n, 4).Value = "" And rw.Cells(n, 5).Value = "" And rw.Cells(n, 6).Value = "" And rw.Cells(n, 7).Value = "" And rw.Cells(n, 8).Value = "" And rw.Cells(n, 9).Value = "" And rw.Cells(n, 10).Value = "" And rw.Cells(n, 11).Value = "") Then
rw.Rows(n).Delete
End If
Next n
Next WS
End Sub
【问题讨论】:
-
首先,
rw.Cells(n, 3).Value = "Contributions-All Other" And rw.Cells(n, 3).Value = "Program Fees - Youth"将计算为False-rw.Cells(n, 3).Value不能等于"Contributions-All Other"AND 等于"Program Fees - Youth"。您需要使用Or而不是And。 -
我建议
Set rw = ActiveWorkbook.ActiveSheet.UsedRange.Rows应该只是Set rw = ActiveWorkbook.ActiveSheet.UsedRange。 -
除了那些 cmets,你能告诉我们你得到了什么错误信息 - 这将使我们能够找到你的编译错误的原因。
-
在应用这些修复后,代码符合要求,问题不是所有标题都需要间距。第一个
if语句中的那些只需要保留而不被删除,但有些确实需要间距,我如何在标题下插入一行? @YowE3K