如何在Excel for Mac版本上扩展行和列的工作表格式。 16.24

问题描述 投票:0回答:1

我正在使用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

上述工作符合预期,但我需要改进它以使其更加无缝和响应。

非常感谢所有的帮助。我仍然是新手,所以请原谅我提出太多愚蠢的问题。谢谢。

excel vba macos
1个回答
0
投票

您的第一个问题需要检查单元格中是否有任何数据,如果没有则跳过。您需要找到最后一个使用的列的第二个问题,然后您可以使用范围和列号进行格式化。请注意,不需要使用选择或选择,因为它会降低性能。我认为最好使用.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
© www.soinside.com 2019 - 2024. All rights reserved.