0

コードの何が問題なのかわかりません。範囲を正しく設定したと思いましたが、そうではないかもしれません。複数の範囲を設定しようとしました。エラーは、コード「Range("CL_Paid").Paste」の最後のメイン行にあります。

 Sub test()

 Dim HR_Paid, HR_Unpaid, E_Paid, E_Unpaid, SE_Paid, SE_Unpaid, CL_Paid, CL_Unpaid As Range
 Set HR_Paid = Sheets("Data").Range("A1:L49")
 Set HR_Unpaid = Sheets("Data").Range("A50:L99")
 Set E_Paid = Sheets("Data").Range("A100:L149")
 Set E_Unpaid = Sheets("Data").Range("A150:L199")
 Set SE_Paid = Sheets("Data").Range("A200:L249")
 Set SE_Unpaid = Sheets("Data").Range("A250:L299")
 Set CL_Paid = Sheets("Data").Range("A300:L349")
 Set CL_Unpaid = Sheets("Data").Range("A350:L399")




   With Sheets("Data")
      .Select
     ViewMode = ActiveWindow.View
     ActiveWindow.View = xlNormalView
     .DisplayPageBreaks = False
     Firstrow = .UsedRange.Cells(1).Row
     Lastrow = .UsedRange.Rows(.UsedRange.Rows.Count).Row
     For Lrow = Lastrow To Firstrow Step -1
          With .Cells(Lrow, "D")

              If Not IsError(.Value) Then

                  If .Value = ("CL") Then .EntireRow.Cut
                      Range("CL_Paid").Paste


             End If

        End With

    Next Lrow
  End With


 End Sub
4

2 に答える 2

2

If...Thenステートメントの 1 行バージョンを意図的に使用しましたか?

の下の行のくぼみは、何らかの形Ifで に関連しているように見えますIf。あなたはこれを持っています:

If .Value = ("CL") Then .EntireRow.Cut
    Range("CL_Paid").Paste

これはこれと同じ効果があります:

If .Value = ("CL") Then
    .EntireRow.Cut
End If

Range("CL_Paid").Paste

あなたが本当にこれを望んでいると私が疑うとき:

If .Value = ("CL") Then
    .EntireRow.Cut
    CL_Paid.Paste
End If

したがって、これまでに起こったPasteかどうかに関係なく、あなたはしようとしています。Cut

If...Then声明の異なるバージョンの詳細はこちら

于 2013-07-01T22:25:48.813 に答える