我正在使用Excel版本16.24 for Mac,我做了一些宏记录来格式化工作表,然后循环到所有其他工作表。
但是,我目前面临着两个问题。
问题1:如果导入的工作表为空,则会出现错误,因为我不知道如何创建跳到下一个工作表。我必须记得删除表单,以便运行没有错误的代码。
问题2:当我运行“FormatAllSheets”代码时,它只会扩展到受限区域,因为它记录了我拥有的数据。对于下个月的数据,由于存在限制,因此不会对其进行格式化。从录音。
下面是我目前使用的代码,仅基于现有数据逐步记录,我需要将其用于未来的数据。
Sub FormatSheet()
Cells.Select
Selection.AutoFilter
Cells.EntireColumn.AutoFit
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent6
.TintAndShade = 0.599993896298105
.PatternTintAndShade = 0
End With
Selection.Font.Size = 14
Selection.Font.Bold = True
Range("A2").Select
End Sub
Sub FormatAllSheets()
Dim i As Integer
i = 2
Do While i <= Worksheets.Count
Worksheets(i).Select
FormatSheet
i = i + 1
Loop
End Sub
上述工作符合预期,但我需要改进它以使其更加无缝和响应。
非常感谢所有的帮助。我仍然是新手,所以请原谅我提出太多愚蠢的问题。谢谢。
您的第一个问题需要检查单元格中是否有任何数据,如果没有则跳过。您需要找到最后一个使用的列的第二个问题,然后您可以使用范围和列号进行格式化。请注意,不需要使用选择或选择,因为它会降低性能。我认为最好使用.UsedRange
并只格式化实际拥有数据的单元格。
Sub FormatSheet()
Dim lrow as long
Dim ws as ActiveSheet
Cells.Select
Selection.AutoFilter
Cells.EntireColumn.AutoFit
Set ws = ActiveSheet
With ws
lrow = .Range("A" & .Columns.Count).End(xlToRight).Column
End With
With Range("A" & lrow).Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent6
.TintAndShade = 0.599993896298105
.PatternTintAndShade = 0
End With
Selection.Font.Size = 14
Selection.Font.Bold = True
End Sub
Sub FormatAllSheets()
Dim i As Integer
i = 2
Do While i <= Worksheets.Count
Worksheets(i).Select
if Len(Trim(.Range("A1").value)) > 0 then '->change range where data is
FormatSheet
i = i + 1
else
i = i + 1
Loop
End Sub