Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10全般 : Excel 2016)
最終行を取得して転記
投稿日時: 19/11/23 21:56:15
投稿者: たかゆ

vba初心者です。
  
特定セルから開始し最終行を取得して別Excelへ転記させたいのですが、
1004 「アプリケーション定義またはオブジェクト定義のエラーです。」が表記され解決できないでいます。
  
ご享受頂けないでしょうか。下記が作業中のコードです。
  
恐れ入りますが、宜しくお願い致します。
  
sub 転記()
  
Dim wb1 As Worksheet
Dim wb2 As Worksheet
  
Set wb1 =Workbooks("転記前.xlsx").Worksheets("転記前")
Set wb2 =Workbooks("転記後.xlsx").Worksheets("転記後")
  
Dim lastlow1 As Long
Dim lastlow2 As Long
  
lastlow1 = wb1.Cells(Rows.Count,1).End(xlUp).Row
lastlow2 = wb2.Cells(Rows.Count,4).End(xlUp).Row
  
wb1.Range("A2" & lastlow1).Copy
wb2.Rnge("D11" & ladtlow2).PasteSpecial xlPasteAll
  
End Sub

回答
投稿日時: 19/11/23 22:28:31
投稿者: WinArrow
投稿者のウェブサイトに移動

セル範囲の記述に原因があります。
>wb1.Range("A2" & lastlow1).Copy

wb1.Range("A2:A" & lastlow1).Copy
 
>wb2.Rnge("D11" & ladtlow2).PasteSpecial xlPasteAll

wb2.Rnge("D11:D" & ladtlow2).PasteSpecial xlPasteAll
 
※少し気になったところ
 
複写元のセル範囲と複写先のセル範囲は、同じ大きさなんでしょうか?
 
同じだとしたら、複写先のセル範囲を取得しなくても
代案・・・・別の記述
 
wb1.Range("A2:A" & lastlow1).Copy Destination:=wb2.Rnge("D11")
 
で可能です。
 
 

回答
投稿日時: 19/11/23 22:52:37
投稿者: WinArrow
投稿者のウェブサイトに移動

前レスで、気になるところ…と書かせていただきましたが、
 
複写先の最終行を取得するには、疑問があります。
 
例えば、最終行が、10だったら、
D11:D10
という範囲になってしまいますよね?
 
従って、複写先は、
D11という固定ではなく、
 
wb1.Range("A2:A" & lastlow1).Copy Destination:=wb2.Range("D" & lastrow2 + 1)
 
にすべきでは?
 
別件
掲示板には、手入力で記述していますか?
 
コードペインからコピペしてください。
>wb2.Rnge("D11
の記述は間違っていますよ!!!

投稿日時: 19/11/24 17:29:44
投稿者: たかゆ

ありがとうございます。
 
代案のやり方でうまく動かすことができました。
 
 
手入力しておりました。確認不足で申し訳ありません。

回答
投稿日時: 19/11/24 20:01:20
投稿者: WinArrow
投稿者のウェブサイトに移動

たかゆ さんの引用:

代案のやり方でうまく動かすことができました。

 
代案の訂正版ですよね?
 
どこが問題だったのかをきちんと理解してくださいね・・・

トピックに返信