2017-07-06 2 views
1

Ich möchte einige Werte von einem (src) Arbeitsbuch in meine (dst) Arbeitsmappe kopieren, indem ich die letzte nicht leere Zelle finde.VBA-Makro kann die letzte verwendete Zelle mit ActiveCell nicht finden

In meinem Fall funktioniert die Kopie einfügen, bis die src Arbeitsmappe keinen Eintrag hat.

Ergebnis meiner Makro wie folgt aussieht:

Header - |email |Name |origin 
1.row - |email3 |Name2 |CH3 
2.row - |email2 |empty |ch2 

Was ich erwartet ist:

Header - email |Name |origin 
1.row - email3 |x  |CH3 
2.row - email2 |Name2 |ch2 

Mein Codeblock:

Workbooks.Open (Filepath & MyFile) 
Range("A2").Copy 
ActiveWorkbook.Close savechanges:=False 

erow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row 
ActiveSheet.Paste Destination:=Worksheets("AP217").Range(Cells(erow, 1), Cells(erow, 1)) 

If ActiveCell.Value = "" Then 
ActiveCell.Value = "x" 
End If 

Es wäre toll, wenn jemand raten könnte .

Prost

+0

Sie lesen sollten [VBA Best Practices: Vermeiden Sie Active oder Active in Excel] (https://stackoverflow.com/documentation/excel-vba/1107/vba-best-practices/7264/avoid-using-activecell-oder-activesheet-in-excel) und auch [Niemals das Arbeitsblatt übernehmen] (https://stackoverflow.com/documentation/ excel-vba/1107/vba-best-practices/9218/nehmen Sie niemals das Arbeitsblatt an) sollte Ihnen helfen, Probleme zu vermeiden. –

Antwort

0

Ich würde einfach den Fehler, so etwas wie dies handhaben:

erow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row 

On Error Resume Next ' ADD THIS LINE 

ActiveSheet.Paste Destination:=Worksheets("AP217").Range(Cells(erow, 1), Cells(erow, 1)) 

On Error GoTo 0 ' ADD THIS LINE -- this cancels the "Resume next", just in case... 
Verwandte Themen