2016-06-21 9 views
0

Ich bin relativ neu in VBA. Wenn Sie versuchen, ein Blatt zu kopieren, sind nicht alle Zeilen enthalten, wenn das Sub ausgeführt wird. Die Anzahl der Zeilen im Quelldokument ist variabel, daher habe ich "LastRow" verwendet. Bitte lass mich wissen, was mache ich falsch?Was fehlt, um ein Blatt auf ein anderes Blatt zu kopieren? Nicht alle Zeilen enthalten, wenn aktuelle Sub ausgeführt wird

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

Sie kopieren Weg zu vielen Zeilen (sobald Sie LastRow korrekt gefunden haben). Wenn LastRow beispielsweise 15 ist, wird "AL1" & "LastRow" zu "AL115". Das '&' verbindet sich mit Strings, es "fügt" keine Zeilen oder etwas ähnliches hinzu. – arcadeprecinct

Antwort

1

Der Schuldige ist wahrscheinlich diese Linie.

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

Versuchen Sie explizit, die Arbeitsmappe und das Arbeitsblatt zu referenzieren, von denen Sie kopieren möchten.

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

Wenn Sie dies nicht tun, wird es sich in einer bestimmten Arbeitsmappe nach dem Blatt umsehen, zu dem Sie aktiv sind.

+0

Das hat wie ein Zauber funktioniert. Danke für die Hilfe. Sehr geschätzt. –

+0

Kein Problem. Nach nochmaligem Betrachten gilt der Kommentar von Arcadeprecinct ebenfalls. Sie ziehen zusätzliche leere Zeilen ein, indem Sie AL1 und AN1 mit LastRow verketten. Nehmen Sie einfach die 1 und es sollte gut sein. – DuctTapeCoder

Verwandte Themen