[[20210205154154]] 『VBA 最終行を取る際に解決できないこと』(AAbb) ページの最後に飛ぶ

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

 

『VBA 最終行を取る際に解決できないこと』(AAbb)

現在、"名簿"のシートからオートフィルタをかけ別のシート"Sheet2"にコピペをするマクロを作成中です。

B列に文字列"****"(仮)でフィルタをかけて、そこから4つの項目(列)をコピーし、"Sheet2"に貼り付けたいです。

そのため以下のようなマクロを作成しましたが、一つ問題が発生しその対処ができず困っています。

Sub ****()

   With Sheets("名簿").Range("A1")
     .AutoFilter 2, "****"
    Range(Range("C2"), Cells(Rows.Count, 3).End(xlUp)).Copy _
         Sheets("Sheet2").Cells(Rows.Count, 2).End(xlUp).Offset(0, 0)
      Range(Range("D2"), Cells(Rows.Count, 4).End(xlUp)).Copy _
         Sheets("Sheet2").Cells(Rows.Count, 3).End(xlUp).Offset(0, 0)
      Range(Range("G2"), Cells(Rows.Count, 7).End(xlUp)).Copy _
         Sheets("Sheet2").Cells(Rows.Count, 4).End(xlUp).Offset(0, 0)
      Range(Range("K2"), Cells(Rows.Count, 11).End(xlUp)).Copy _
         Sheets("Sheet2").Cells(Rows.Count, 5).End(xlUp).Offset(0, 0)
          .AutoFilter

    End With

End Sub

問題の内容は以下の通りです。
C,D列には必ず値が入っているので問題ないですが、G,K列は必ず値が入るとは限らず場合によってはオートフィルタをかけた時全てが空白になることもあります。
(言い忘れていましたが、1行目には項目名が入っています。)
もしそうなった場合、現在記述しているVBAでは、G2〜G列の最終行までの範囲をコピーするので、Gの1行目がコピーされてしまいます。
このようなことが起こらないようにしたいです。

原因はわかっているのですが、どうすればいいか分からず困っています。
お力を貸していただけると嬉しいです。

マクロは初心者なので、説明等至らないところもあると思います。
申し訳ありません。

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


すみません。
自分で解決したかもしれませんが、今手元にPCがなく確認ができないので引き続き回答をお待ちします。
最終行+1をすれば解決しますでしょうか?
(AAbb) 2021/02/05(金) 16:25

■1
>自分で解決したかもしれませんが、今手元にPCがなく確認ができない
その状態だと、回答があったとしても研究できないのでしょうから、PCの前にもどってからまずはご自身の考えを検証して、結果を提示してみてはどうでしょうか?

成功するなら、同じ悩みを持った方の参考になるでしょうし、失敗するなら何故うまく行かないのか説明してもらえるかもしれません。
また、別案という形でアイデア提供があるかもしれません。

■2
ちょっと確認ですが↓は何をしたいのですか?

 .Offset(0, 0)

■3
1列ずつコピーせずとも、オートフィルタで抽出されている範囲のうち、C,D,G,K列を一括コピーして、出力したいセル【1つ】に貼り付ければ事足りませんか?

オートフィルタが設定されている範囲は↓で取得可能です。

 シートオブジェクト.AutoFilter.Range

そのうち、C,D,G,K列をコピーして、貼り付けたいならIntersectメソッドを使えば↓のように記述できます。

 With ActiveSheet
     Intersect(.AutoFilter.Range, .Range("C:D,G:G,K:K")).Copy 貼付先のセル
 End With

項目行が要らない場合は、それこそOffset(1, 0)すればよいですし・・・

(もこな2) 2021/02/05(金) 19:01


コメント返信:

[ 一覧(最新更新順) ]


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