1

VBAコードでこれを実行したい:セルが「何とか何とか」に等しい場合は、新しい列を挿入し、そうでない場合は次のシートに移動します。事は、私がそれなしでそれを実行すると

wシート

その後、すべてが機能します(次のシートに移動することを除く)。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
4

1 に答える 1

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
于 2013-07-05T07:22:57.120 に答える