2016-03-16 18 views
-1

我想在每張工作表中以相同的方式格式化工作表,目前代碼工作正常,除了for each ws in workbook部分。VBA對於每個ws只執行活動工作表上的代碼

所有的代碼執行得不錯,但只在activesheet。 我在這裏錯過了什麼?

由於提前,

Option Explicit 
Sub prepareForInput() 
Application.ScreenUpdating = False 
Dim ws As Worksheet 
Dim answer As Variant 
Dim i As Integer, lastcol As Integer 

answer = MsgBox("Would you like to update the tracker sheet automatically?", vbYesNo) 
If answer = vbYes Then 
    For Each ws In ActiveWorkbook.Worksheets 
     Range("A1:A100").EntireRow.Hidden = False 
     lastcol = Cells(1, Columns.Count).End(xlToLeft).Column - 11 
     'hide newly unneeded columns 
     For i = 1 To 3 
      Columns(lastcol).Hidden = True 
      lastcol = lastcol + 1 
     Next i 
     lastcol = Cells(1, Columns.Count).End(xlToLeft).Column 
     'paste across columns 
     For i = 1 To 3 
      Columns(lastcol).Copy Columns(lastcol + 3) 
      lastcol = lastcol - 1 
     Next i 
    Next ws 
End If 
Application.ScreenUpdating = True 
End Sub 

回答

3
For Each Ws In ActiveWorkbook.Worksheets 
    With Ws 
     .Range("A1:A100").EntireRow.Hidden = False 
     lastcol = .Cells(1, .Columns.Count).End(xlToLeft).Column - 11 
     'hide newly unneeded columns 
     For i = 1 To 3 
      .Columns(lastcol).Hidden = True 
      lastcol = lastcol + 1 
     Next i 
     lastcol = .Cells(1, .Columns.Count).End(xlToLeft).Column 
     'paste across columns 
     For i = 1 To 3 
      .Columns(lastcol).Copy .Columns(lastcol + 3) 
      lastcol = lastcol - 1 
     Next i 
    End With 
Next Ws 
+0

知道我會錯過這樣簡單的東西,謝謝:) –

0

你需要前綴之類的範圍( 「A1:A10」)與WS,所以ws.range( 「A1:A10」),或在選擇WS每個循環。沒有範圍&單元格將作用在活動工作表上。

相關問題