ここから本文です

For i = 3 To Cells(3, 11).End(xlDown).Row Range(Cells(3, 5), Cells(i, 11)).C...

pro********さん

2012/2/909:59:42

For i = 3 To Cells(3, 11).End(xlDown).Row
Range(Cells(3, 5), Cells(i, 11)).Copy
Workbooks("Book1.xlsx").Worksheets("Sheets1").Range("X65536").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues

上記のコードを実行すると、なぜか同じ内容が2回ペーストされてしまいます。
Workbooks("Book1.xlsx").Worksheets("Sheets1").Range("X65536").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValuesを

Workbooks("Book1.xlsx").Worksheets("Sheets1").Range("X1").PasteSpecial Paste:=xlPasteValues

にした場合は問題なく同じ内容が重複してペーストされないのですが、何がまずいのでしょうか?
最終行の次の行に貼り付けていくというようにしたいです。
よろしくお願いします。

閲覧数:
457
回答数:
1
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

ton********さん

編集あり2012/2/1611:06:23

End(xlDown)は「Ctrl」+「↓」キー、End(xlUp)は「Ctrl」+「↑」キー
が送信されますので、キーを受けるシートは排他的な状態になる必要が
あるのではないのでしょうか!?
最終行を求めてからオフセットでセルを進めるなどした方が無難かと
思います。下記のソースは1例です。

Private Sub Copy_Paste()

Dim bookF As Workbook, bookT As Workbook
Dim sheetF As Worksheet, sheetT As Worksheet
Dim lastRow As Long
Dim lastCell As String
Dim i As Long, j As Long

Set bookF = ThisWorkbook
Set sheetF = bookF.Worksheets("Sheet1")

Set bookT = ThisWorkbook
Set sheetT = bookT.Worksheets("Sheet2")

lastRow = sheetT.Range("X65536").End(xlUp).Row
lastCell = "X" & CStr(lastRow)

j = 0
For i = 3 To sheetF.Cells(3, 11).End(xlDown).Row

j = j + 1
sheetF.Range(Cells(i, 5), Cells(i, 11)).Copy
sheetT.Range(lastCell).Offset(j).PasteSpecial Paste:=xlPasteValues

Next i

Set sheetF = Nothing
Set bookF = Nothing
Set sheetT = Nothing
Set bookT = Nothing

End Sub

この回答は投票によってベストアンサーに選ばれました!

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる