我希望VBA代码执行此操作:如果单元格等于" blah blah",则插入新列,否则移至下一页。事情是,如果我没有
运行它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
答案 0 :(得分: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