macros来格式化单元格宽度

我用macroslogging器来logging这个macros,我需要格式化一些列为$和自动适合的列。 但是,当我尝试从VBE执行此macros时,不会发生格式更改。 在这个语法中应该修改什么来正确地格式化数据?

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 Craner的评论一样,你需要包括前面的内容。 但是,您可以通过删除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