格式化单元格宽度的宏

Macro To Format Cell Width

我使用宏记录器来记录这个宏,我需要将一些列格式化为 $ 并自动调整这些列。但是,当我尝试从 VBE 执行此宏时,没有发生任何格式更改。应该更改此语法中的哪些内容以正确格式化我的数据?

Public Function Format()

Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets

With ws
    Cells.Select
    Cells.EntireColumn.AutoFit
    Columns("D:M").Select
    Selection.NumberFormat = "$#,##0"
    Range("A1").Select
End With

Next

End Function

与 Scott Cramer 的评论一样,您需要包括前面的 .但是,您可以通过删除 with 块并使用工作表限定符

来缩短这段代码
Public Sub Format()
    Dim ws As Worksheet
    For Each ws In ActiveWorkbook.Worksheets
        ws.Cells.Columns("D:M").NumberFormat = "$#,##0"
        ws.Cells.EntireColumn.AutoFit
        ws.Activate
        ws.Range("A1").Select
    Next
End Sub