2016-12-06 140 views
0

我用宏录制器来记录这个宏,我需要格式化一些列为$并自动适合列。但是,当我尝试从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 
+1

当使用带块,你需要添加一个'.'对每个对象的前面那就是工作表中的孩子。所以第一行是'.Cells.Select' –

+0

@ScottCraner - 这给了我一个错误的“方法或数据成员找不到”在这一行.Selection.NumberFormat =“$#,## 0” –

+2

'Selection'不是工作表的孩子。 – YowE3K

回答

2

与Scott Craner的评论一样,您需要包含前面的内容。不过您可以通过块取出缩短这段代码和使用工作表预选赛

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 
+0

明白了,谢谢@Sorceri –

+0

我很高兴你改变了'NumberFormat'和'AutoFit'的顺序 - 这在原来的问题中让我很烦恼! – YowE3K