2016-05-20 4 views
-1

あるブックから別のブックにデータをコピーしようとしています。 私はコードの部分の下に書かれたhavsが、線の下に実行したとき、私は範囲エラー外の添字を取得しています -ブックから別のブックにデータをコピーするときに下付き文字エラーが発生する

ThisWorkbook.Sheets("Sheet2").Range("A" & i, Sheets("Sheet2").Range("A" & i).Offset(chunks - 1, c_cnt - 1)).Value = Workbooks("C:\Users\user1\Desktop\" & f_name).Sheets("Sheet1").Range("A" & i, Sheets("Sheet1").Range("A" & i).Offset(chunks - 1, c_cnt - 1)).Value 

変数値:

i=1 
chunks=10 
fname="test.xlsx" 
+2

がそれをですそれがさらに読みやすくするかもしれない 'f_name'まだ変数は' fname'はありますか? –

+0

私はブックを参照するためにfnameを使用していますが、f_nameはワークブックの名前に設定されています。 – anurag

答えて

0

は前の値を割り当てる先のワークシートを選択してみてください。

Workbooks("C:\Users\user1\Desktop\" & f_name).Sheets("Sheet1").select 

(とあなたが意図したとおりに、あなたがF_NAMEやfnameのを使用していることを確認してください)

2

私はあなたのコードに何かがあると思うだけで、シートを引っ張っておく必要があるブックを指定せずにsheet()を呼び出すだけです。両方のワークシートの変数を設定して、それを明確に定義できるようにしてください。また、後でデバッグする必要がある場合は、この行を少し読みやすくします。

Dim wb As Workbook, ws1 As Worksheet, ws2 As Worksheet 

Set ws1 = Workbooks("C:\Users\user1\Desktop\" & f_name).Sheets("Sheet1") 
Set ws2 = ThisWorkbook.Sheets("Sheets2") 

ws2.Range("A" & i, ws2.Range("A" & i).Offset(chunks - 1, c_cnt - 1)).Value = ws1.Range("A" & i, ws1.Range("A" & i).Offset(chunks - 1, c_cnt - 1)).Value 

あなたも遠くに行くと、あまりにも範囲変数を定義することができ、これはあなたが呼んでいるので

Dim wb As Workbook, ws1 As Worksheet, ws2 As Worksheet 
Dim rng1 As Range, rng2 As Range 

Set ws1 = Workbooks("C:\Users\user1\Desktop\" & f_name).Sheets("Sheet1") 
Set ws2 = ThisWorkbook.Sheets("Sheets2") 

Set rng1 = ws1.Range("A" & i).Offset(chunks - 1, c_cnt - 1) 
Set rng2 = ws2.Range("A" & i).Offset(chunks - 1, c_cnt - 1) 

ws2.Range("A" & i, rng2).Value = ws1.Range("A" & i, rng1).Value 
+0

これで問題が解決しない場合でも、OPによって最初に投稿されたコードよりもはるかに簡単にデバッグできます。 +1、私はコメントに似たようなことを示そうとしていました。 –

関連する問題