2016-12-20 11 views
0

いくつかの基準に基づいて、あるブックから別のブックにデータをコピーしようとしました。マクロは、次のように宛先ワークブックに書き込まれます。 しかし、私がコードを実行すると、 "ランタイムエラー9.スクリプトの範囲外のエラー"が表示されます。誰も私がコードを見て助けることができますか?ありがとう!!!!基準に基づいて1つのブックから別のブックにデータをコピー

Sub sbCopyRangeToAnotherSheetFromLastRow() 
    Dim s1Sheet As Worksheet, s2Sheet As Worksheet 
    Dim source As String 
    Dim target As String 
    Dim path As String 
    Dim path1 As String 
    Dim rngSource As Range 
    Dim rngTargetStart As Range 
    Dim rngTargetStart2 As Range 
    Dim j As Long, k As Long, erow As Integer 

    source = "PB Position" 'Source Tab Name 
    path_source = "C:\Temp\MIS RISK REPORT.xlsm" 
    target = "Input - Trailing 12 week" 'Target tab Name 
    Application.EnableCancelKey = xlDisabled 

    Set s1Sheet = Workbooks.Open(path_source).Sheets(source) 
    Set s2Sheet = ThisWorkbook.Sheets(target) 
    Set rngSource = Range(s1Sheet.Range("A8"), s1Sheet.Cells.SpecialCells(xlCellTypeLastCell)) 
    Set rngTargetStart = s2Sheet.Range("C" & Rows.Count).End(xlUp).Offset(1) 

    k = rngSource.Rows.Count 

    For j = 8 To k 
     If (rngSource.Cells(j, "O") = "K1" Or rngSource.Cells(j, "O") = "K2" Or rngSource.Cells(j, "O") = "G2") And rngSource.Cells(j, "AH") <> 1 Then 
      rngSource.Cells(j, "A").EntireRow.Select 
      Selection.Copy 
      Worksheets(target).Select 
      erow = ActiveSheet.Cells(Rows.Count, "C").End(xlUp).Offset(1, 0).Row 
      ActiveSheet.Cells(erow, "C").Select 
      ActiveSheet.Paste 
      ActiveWorkbook.Save 
      Application.CutCopyMode = False 
     End If 
    Next j 
End Sub 
+0

どこから来ているかもしれ

rngSource.Cells(j, "A").EntireRow.copy destination:= ActiveSheet.Cells(erow,"A") 

すべきですか? – Chrismas007

+0

あなたの 'Set rngSource'行は' s1Sheet.Range( "A8"、s1Sheet.Cells.SpecialCells(xlCellTypeLastCell)) 'を読むべきです、それはここでは問題ではないかもしれませんが、 – Wolfie

答えて

0

私は、第三にコメントを書くことを約あったので、私は答えにすべての私のアドバイスをしこりでしょうし、うまくいけば、このクリーンアップはあなたの問題を修正します。

1)あなたのSet rngSource行は、ここで問題になるが、それは実際にあなたが私が思うたい範囲を対象としないことがあり

s1Sheet.Range("A8", s1Sheet.Cells.SpecialCells(xlCellTypeLastCell)) 

を読んでください!

2)また、選択(this previous SO questionを参照)を使用しないでください。代わりに、まずあなたが列Cに細胞内に行全体を貼り付けることができないことを除いて

rngSource.Cells(j, "A").EntireRow.copy destination:= ActiveSheet.Cells(erow,"C") 

を使用し、erowを計算!これは、実際にこの範囲のエラーのあなたのうちにエラーが並ぶ

関連する問題