Excel (VBA)

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

 
(指定なし : 指定なし)
コピーを最終行に貼り付けたい
投稿日時: 22/11/26 16:52:29
投稿者: ronboi

 A B C D E F G
1 4 5 6 6 6 6 6
2 5 6 6 6 4 4 5
3 2 4 4 4 4 4 4
4 8 5 2 8 8 8 8
5 3 3 3 4 4 4 6
6
7
8
9
10
11
12
13
14
15
16
17 1 2 3 4 5 6 7
お世話掛けます宜しくお願いします。
1行 A〜G のデーターが有ります
17行に有るデーターを A〜Gを、最終行に貼り付けたいのですが、旨くいきません。
ご指導宜しくお願いします。

回答
投稿日時: 22/11/26 18:55:56
投稿者: WinArrow
投稿者のウェブサイトに移動

>最終行
とは、何処の行のことですか?
   
>うまくいかない
のではなく、
そのうまくいかないコードを掲示してください。
  
説明不備
やろうとしていることと
やっていることが不一致だからです。
  
やろうとしていることも
やっていることも
説明がないです。
 
※最終行はシートの最終行ではなく、データの入っている最終行と推測します。
 今回は、17行目となります。
※17行目を最終行に貼付け(切り取りでも、コピーでもよい)すると、
 どうなるか想像してみましょう。

回答
投稿日時: 22/11/26 23:13:22
投稿者: simple

その例で言うと、17行目のデータを6行目にコピーペイストするのですかね。

    Range("A17:G17").Copy Range("A1").End(xlDown).Offset(1)
といったコードになると思われます。
 
・ Range("A1").End(xlDown)でA1から下にジャンプしたセルを表し、
・ .Offset(1)で、その一行下にあるセルを表します。
これが基本形です。よく理解してください。
こちらの即効テクニックにある記事「終端セルを参照する(Endプロパティ)」
https://www.moug.net/tech/exvba/0050088.html
が参考になるでしょう。
 
なお、エッジケースとして、
・1〜16行までに何もデータがない場合、
・1行目しかデータがない場合、
・1〜16行まですべてデータが書き込まれている場合、
などがあるとしたら、上記では対応できません。
個別の対応が必要になることを念のため付記しておきます。
まず基本形の理解が大切だと思います。

投稿日時: 22/11/26 23:31:34
投稿者: ronboi

ありがとうございます simple様 解決しました。
今後とも、宜しくお願いします。