在工作簿中的所有工作表中运行我的macros

目前我有一个macros运行,并在活动工作表中find标题“DATE”和“DT”,并重新格式化列中的单元格。 我希望能够通过所有工作表运行并运行macros。 这里是当前的VBA代码:

Sub DateFormatting() Dim x As Variant With ActiveWorksheet For Each x In .Range(.Cells(2, 1), .Cells(2, .Columns.Count).End(xlToLeft)).Cells If InStr(1, Replace(x.Value, "DATE", "DT", , , vbTextCompare), "DT", vbTextCompare) Then Intersect(.UsedRange, .UsedRange.Offset(2), x.EntireColumn).NumberFormat = "m/d/yyyy h:mm" End If Next End With End Sub 

只是总结所有评论:

 Option Explicit Sub DateFormatting2() Dim x As Variant Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets With ws For Each x In .Range(.Cells(2, 1), .Cells(2, .Columns.Count).End(xlToLeft)).Cells If InStr(1, Replace(x.Value2, "DATE", "DT", , , vbTextCompare), "DT", vbTextCompare) Then Intersect(.UsedRange, .UsedRange.Offset(2), x.EntireColumn).NumberFormat = "m/d/yyyy h:mm" End If Next x End With Next ws End Sub 

注释:

  1. For Each ws In ThisWorkbook.WorksheetFor Each ws In ThisWorkbook.Worksheet结束时错过了
  2. with ws语句里面的for each ws循环都应该是相反的。 如果尚未启动,则不能使用ws
  3. 结束With你需要End With而不是Next
  4. Option Explicit只是为了好的措施。