[[20200505145231]] 『VBA A4から始まる表のデータをコピー』(みー) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBA A4から始まる表のデータをコピー』(みー)

初歩的かもです、すみません。

A4から始まる表のデータをコピーしたいのですが、
マクロの記録でやると、

Sub Macro1()
'
' Macro1 Macro
'

'

    Range("A4:BF369").Select
    Selection.Copy
End Sub

となるのですが、これだと表があとから追加された場合でも、369までのデータをコピーするという意味だと思うんです。

どうすればあとから追加されたデータも、もれなくコピーできるのでしょうか?

すみません、よろしくお願いします。

< 使用 Excel:Office365、使用 OS:Windows10 >


こんにちは ^^
Currentregion
Usedrange
最終行の取得方法
範囲の指定方法
など ← 他にもあるかも ^^;
調べていただきご自分の情報にあった
最適な方法をご勘案下さい。
(隠居じーさん) 2020/05/05(火) 15:43

書いている間に編集がかぶってしまいましたが、そのまま。

質問とは関係ないですが、VBAの世界では基本的にシートやセルなど(オブジェクトといいます)を明示すれば、いちいち選択したりアクティブにしたりする必要はありません。
したがって、提示のコードは

 Sub 実験
   Range("A4:BF369").Copy
 End Sub

という感じでも同じことになります。
また、セル範囲を表すには、【1つの文字列】で表すほかに、↓のように【2つ】のセルで表すことも可能です。

 Range(Range("A4"),Range("BF369")).Copy

さらに、↑のように【2つ】のセルで表現する場合、中のRangeは↓のように省略することも可能です。

 Range("A4","BF369").Copy
 Range("A4",Range("BF369")).Copy

これを踏まえて、質問の「あとから追加されたデータ」について、例えば"A4"〜BF列の最終行と考えて見た場合

   Sub 実験01()
      Range("A4", Cells(Rows.Count, "BF").End(xlUp)).Copy
   End Sub

みたいな方法もあるのではないかとおもいます。

このほか、BF列は歯抜けがあって最終行を調べるのに使えないということであれば、歯抜けのない別の行の最終行をしらべて使うというのも手ですね。

   Sub 実験02()
      Dim 最終行 As Long

      最終行 = Cells(Rows.Count, "B").End(xlUp).Row
      Range("A4:BF" & 最終行).Copy
   End Sub

したがって、まずはどの列をみれば「あとから追加されたデータ」も含むことになるのか考えてみてはいかがでしょうか?

(もこな2) 2020/05/05(火) 16:00


隠居じーさん、どうもありがとう!^^

教えてもらったワードを検索してトライアンドエラーで動きました♪

Selection.Cells(4, 1).CurrentRegion.Copy

ただ・・・解決したのにちょっと疑問が・・・(笑)

表よりも上の行か表の中を選択しているときは動くんですけど、表よりも下を選択しているときは動かないんですよねー・・・なんでだろ?

Cells(4, 1)って、一番左上のセルA1から数えて下に4、右に1って事だからA4と同じって事ですよね?

調べたネットの記事をそのまま載せると

「一番左上のセルを始点として、下へ2つ、右へ3つ進むという指示がCells(2, 3)と考えるとわかりやすいでしょう。」

って書いてあったから間違ってないと思うんだけどなぁ・・・

(みー) 2020/05/05(火) 16:11


ああああー!お礼コメント書いてたら、もこな2さんから・・・(笑)

もこな2さん、詳しくありがとう!^^

じっくり読んでみます♪

(みー) 2020/05/05(火) 16:14


 >Selection.Cells(4, 1).CurrentRegion

 日本語にすると、選択したセルを1として、下に4つ右に1つの
 セル(単に3つ下のセル)を基準としたCurrentRegion。
 A4固定なら、Cells(4, 1).CurrentRegion

 CurrentRegion
 表内の1つのセルを選択して、Ctrl + * を押した時の範囲。
(BJ) 2020/05/05(火) 16:27

なるほど!めっちゃ分かりやすい♪

BJさん、ありがとう!^^

解決!(笑)
(みー) 2020/05/05(火) 17:12


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.