2016-12-06 3 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

Withブロックを使用する場合、そのワークシートの子であるすべてのオブジェクトの前面に '.'を追加する必要があります。したがって、最初の行は '.Cells.Select'です。 –

+0

@ScottCraner - これは私にこの行の"メソッドまたはデータメンバーが見つかりません "というエラーを表示します.Selection.NumberFormat =" $#、## 0 " –

+2

' Selection'ワークシートの子供ではありません。 – YowE3K

答えて

2

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

それは、@ Sorceriありがとうございました –

+0

元の質問で私を悩ましていた 'NumberFormat'と' AutoFit'の順序を入れ替えてうれしく思います! – YowE3K

関連する問題