我一直在写这个宏,它有三个步骤。 首先是删除行,如果行是C列和二步骤之后空在那里与冠军有留在工作簿就像捐款,所有其他或课程费用行-Youth。 第三步步骤是通过在某些标题之后添加空格或空行来格式化该行。VBA:如何删除行并根据条件保留一些行?
这是我的代码,它似乎没有编译,我不知道如何防止行删除...请帮助。
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 =“贡献 - 所有其他”和rw.Cells(n,3).Value =“节目费用 - 青春”将评估为“False ' - 'rw.Cells(n,3).Value'不能等于'“贡献 - 所有其他”** **和**等于'“节目费 - 青年”'。你需要使用'Or'而不是'And'。 – YowE3K
而且我建议'Set rw = ActiveWorkbook.ActiveSheet.UsedRange.Rows'应该是'Set rw = ActiveWorkbook.ActiveSheet.UsedRange'。 – YowE3K
除了这些评论,你能告诉我们你收到了什么错误信息 - 这将使我们能够找到编译错误的原因。 – YowE3K