2016-06-21 4 views
0

私は比較的VBAを初めて使っています。シートをコピーしようとすると、Subが実行されるときにすべての行が含まれるわけではありません。ソース文書の行数は可変なので、 "LastRow"を使用しています。何が間違っているのか教えてください。シートを別のシートにコピーするには、何が欠けていますか?現在のSubが実行されているときにすべての行が含まれているわけではありません。

Sub CopySheetsl() 

     Dim wb As Workbook, wb1 As Workbook 
     Dim LastRow As Long 

     Set wb = Workbooks.Open("L:\x\Y\z\xxx.xlsx") 
     Set wb1 = Workbooks("macro x v.01.xlsm") 

     LastRow = range("A:Y").Find("*", SearchOrder:=xlByRows,  SearchDirection:=xlPrevious).Row 

     wb1.Sheets("Detail").range("C1", "AN1" & LastRow) = wb.Sheets("Detail_2").range("A1", "AL1" & LastRow).Value 

     wb.Close 
    End Sub 
+1

多くの行にコピーしています(LastRowが正しく見つかったら)。たとえばLastRowが15の場合、 '' AL1 "&LastRow'は' 'AL115 ''になります。 '&'は文字列に結合しますが、それは "行"を追加しません。 – arcadeprecinct

答えて

1

おそらく原因はこの行です。

LastRow = range("A:Y").Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 

コピー元のブックとシートを明示的に参照してください。

LastRow = wb.Sheets("sheet name here").range("A:Y").Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 

あなたはあなたが与えられたワークブック内にアクティブになっているものは何でもシートを見に行くされていない場合。

+0

それは魅力のように働いた。助けてくれてありがとう。とても有難い。 –

+0

問題ありません。再びそれを見た後、arcadeprecinctからのコメントも有効です。 AL1とAN1をLastRowと連結して空白行を追加しています。ちょうど1を取り出して、それは良いはずです。 – DuctTapeCoder

関連する問題