【发布时间】:2018-02-13 11:19:55
【问题描述】:
我已经写了一个代码来做接下来的事情:
- 清除定义的单元格范围并删除任何背景颜色
(第一个标签除外); - 重置标签颜色;
我从这里得到了提示:Excel VBA For Each Worksheet Loop
这里是:
Sub ClearAll()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
If ws.Index <> 1 Then
Call clear(ws)
End If
Next
End Sub
Sub clear(ws As Worksheet)
With ActiveSheet
.Tab.ColorIndex = xlColorIndexNone
.Range(Cells(5, 7), Cells(.Cells(.Rows.Count, "N").End(xlUp).Row - 1, 14)).ClearContents
.Range(Cells(5, 1), Cells(.Cells(.Rows.Count, "D").End(xlUp).Row - 1, 4)).ClearContents
.Range(Cells(5, 7), Cells(.Cells(.Rows.Count, "N").End(xlUp).Row - 1, 14)).Interior.ColorIndex = 0
.Range(Cells(5, 1), Cells(.Cells(.Rows.Count, "D").End(xlUp).Row - 1, 4)).Interior.ColorIndex = 0
End With
End Sub
但运行后我得到一个错误 Run-time error '1004': Application-defined or object defined error.
我修改了代码。它看起来很糟糕:(。但至少它有效。
Sub ClearAll1()
Dim quantWs As Integer
Dim a As Integer
quantWs = ActiveWorkbook.Worksheets.Count
a = 2
Do While a <= quantWs
Worksheets(a).Activate
ActiveSheet.Tab.ColorIndex = xlColorIndexNone
Call clear
a = a + 1
Loop
End Sub
Sub clear(ws As Worksheet)
With ActiveSheet
.Tab.ColorIndex = xlColorIndexNone
.Range(Cells(5, 7), Cells(.Cells(.Rows.Count, "N").End(xlUp).Row - 1, 14)).ClearContents
.Range(Cells(5, 1), Cells(.Cells(.Rows.Count, "D").End(xlUp).Row - 1, 4)).ClearContents
.Range(Cells(5, 7), Cells(.Cells(.Rows.Count, "N").End(xlUp).Row - 1, 14)).Interior.ColorIndex = 0
.Range(Cells(5, 1), Cells(.Cells(.Rows.Count, "D").End(xlUp).Row - 1, 4)).Interior.ColorIndex = 0
End With
End Sub
有人能指出第一个示例中出了什么问题吗?因为工作版太适得其反了……
感谢您的帮助。
【问题讨论】: