2016-03-21 21 views
0

エクセルブックを開いた後にデータの最後の行を取得しようとしていますが、「実行時エラー1004:アプリケーション定義またはオブジェクト定義エラー」が返されていますこの形式をコードに何度も使用していたので、私はここで何が欠けているのか分かりません。 私は変数をLongと定義しましたが、誰にもアイデアはありますか?私のコードは以下の通りです:VBA:LastRowコード実行時のアプリケーション定義エラー

Function get_end_row(ByVal column_with_data As Long) As Long 
Dim last_row As Long 

last_row = ThisWorkbook.Sheets(1).Rows.Count 
get_end_row = ThisWorkbook.Sheets(1).Cells(last_row, column_with_data).End(xlUp).Row 

End Function 

Sub Master() 
Call MVP 
End Sub 

Sub MVP() 
Dim endRow As Long 
Dim wb As Workbook, ws As Worksheet 
Dim lastRow1 As Long 

Set wb = ThisWorkbook 
Set ws = ThisWorkbook.Sheets(1) 
endRow = get_end_row(1) 

Set mvpcomm = Workbooks.Open("File Path") 
Set wsMVPComm = mvpcomm.Sheets("Combined") 
lastRow1 = wsMVPComm.Range("A" & Rows.Count).End(xlUp).Row 
wsMVPComm.Range("A2:AZ" & lastRow1).Copy Destination:=ws.Range("A" & endRow + 1) 



End Sub 

私は本当にありがとう!ありがとうございました。

+0

投稿をコードで二回それを使うだろうか?一般的に、VBAが特定の範囲を見つけるのに問題がある場合、別のワークブックがアクティブになったり、シート名が変更されたりするため、このエラーが発生しました。 –

+0

lastRow1 = wsMVPComm.Range( "A"&Rows.Count).End(xlUp).Row – MCJNY1992

+0

コードをステップ実行し、実際にどの行がエラーをスローするかを確認します。 – user3598756

答えて

3

ThisWorkbookは新しいもの

のですが、あなたを作ることができる

lastRow1 = wsMVPComm.Range("A" & wsMVPComm.Rows.Count).End(xlUp).Row 

代わりの

lastRow1 = wsMVPComm.Range("A" & Rows.Count).End(xlUp).Row 

を試しながら、おそらくあなたはwsMVPCommとして開かれたブックは、古いExcel形式であります次のような問題を回避するのに役立ちます。

Function get_ws_end_row(ws As Worksheet, column_with_data As Long) As Long 
    get_end_row = ws.Cells(ws.Rows.Count, column_with_data).End(xlUp).Row 
End Function 

、その後、あなたがエラーがポップアップした後、あなたは(ハイライト)上のデバッガの停止を何行

endRow = get_ws_end_row(ws, 1) 
... 
lastRow1 = get_ws_end_row(wsMVPComm, 1) 
関連する問題