2013-07-05 54 views
1

我希望VBA代碼這樣做:如果單元格等於「等等」,則插入新列,否則移動到下一個表格。事情是,如果我沒有VBA如果單元格等於「」做「」,否則轉到下一頁

wSheet

運行它,然後一切正常(除了要在下頁)。當我添加wSheet時,代碼保留在第一個活動工作表中創建額外的列,即使單元格不等於2013 06.有什麼建議嗎?謝謝!

Sub Macro2() 
' 
' Macro2 Macro 
' 
dim wSheet As Worksheet 

For Each wSheet In Worksheets 

If wSheet.Range("R1")="2013 06" Then 
'If Range("R1") = "2013 06" Then 
    Columns("R:T").Select 
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 
    Columns("L:N").Select 
    Selection.Copy 
    Columns("R:R").Select 
    ActiveSheet.Paste 
    Selection.Replace What:="2013 04", Replacement:="2013 06", LookAt:=xlPart _ 
     , SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
     ReplaceFormat:=False 

ElseIf wSheet.Range("R1")<>"2013 06" Then 
'ElseIf Range("R1") <> "2013 06" Then 
End If 

Next wSheet 

End Sub 

回答

2

你並不真的需要國家的else,只是 - 什麼都不做,這意味着讓循環進入下一個片。它也不建議使用.Select方法,所以我優化了你的代碼。看看這是否按預期工作:

Sub Macro2() 
    Dim wSheet As Worksheet 
    For Each wSheet In Worksheets 
     If wSheet.Range("R1") = "2013 06" Then 
      wSheet.Columns("R:T").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 
      wSheet.Columns("L:N").Copy 
      wSheet.Paste 
      wSheet.Columns("R:R").Replace What:="2013 04", Replacement:="2013 06", LookAt:=xlPart _ 
       , SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
       ReplaceFormat:=False 
     End If 
    Next wSheet 
End Sub 
+1

工程就像一個魅力。謝謝。 – atomoutside

相關問題