Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Microsoft 365)
最終行までをコピーしたい
投稿日時: 22/11/29 17:08:11
投稿者: takatada72

お世話になります。
下記のようなコードでコピーをしたいのですが、最終行の表し方がわからず
ご指導頂けないでしょうか
 
検索すると、こちらが最終行になるかと思いますが、下記のコードに対して、
どのように修正したら宜しいでしょうか
※Cells(Rows.Count, 1).End(xlUp).Row
 
Workbooks("database-Form.xlsm").Sheets("data").Range("A1:CD9").Copy
 
お忙しいとは思いますが宜しくお願い致します。

回答
投稿日時: 22/11/29 18:03:23
投稿者: WinArrow
投稿者のウェブサイトに移動

>Workbooks("database-Form.xlsm").Sheets("data").Range("A1:CD9").Copy
  
この「CD9」を最終行にしたいということでしょうか?
 
参考コード

Dim 最終行 As Long
With Workbooks("database-Form.xlsm").Sheets("data")
    最終行 = .Cells(.Rows.Count, 1).End(xlUp).Row
    .Range("A1:CD" & 最終行).Copy

回答
投稿日時: 22/11/30 09:09:55
投稿者: hatena
投稿者のウェブサイトに移動

A1から始まる表範囲全体をコピーしたいということなら、CurrentRegionを使うといいかもしれません。
 

Workbooks("database-Form.xlsm").Sheets("data").Range("A1").CurrentRegion.Copy

 
範囲を取得する方法は、CurrentRegion、End、UsedRange などいろいろありますので、状況に応じて使い分けるといいでしょう。
 
[Excel VBA セルを参照する CurrentRegion、End、 UsedRangeプロパティ](https://kosapi.com/post-2790/)

回答
投稿日時: 22/11/30 09:16:00
投稿者: Suzu

何故か日時が書き込みできません。
https://www.moug.net/faq/viewtopic.php?t=81890
 
の続きですよね。
 
いま、ふたつのブックが開いていて
 
最終行を取得する
  Cells(Rows.Count, 1).End(xlUp).Row
 
と、
セル範囲をコピーする
 Workbooks("database-Form.xlsm").Sheets("data").Range("A1:CD9").Copy
 
は別のブックなのですよね。
 
 
その説明をしないと、正しい回答は得られませんよ。
 
その辺りを 質問者の方に確認してもらう為に 前回コードを示しました。
それを、試しても居ないのではありませんか?

投稿日時: 22/11/30 09:35:00
投稿者: takatada72

WinArrowさん
hatenaさん
 
お世話になりました。
 
お二人のコードに感激で、2つのコードともに、私がやりたかったことが実現できました。
解決しましたのでクローズさせて頂きます。
 
ありがとうございました。