映画のエンドロール観る派?観ない派?

こんばんは。

毎日作成しているエクセルファイルをマクロ化しようとしているマクロ初心者です。

A〜V列までフィルターがついている資料のH列のデータが特定のものを絞り、抽出したデータのうち、C列〜N列までを見出しの行(1行目)を含めてコピーし、別のシートに貼り付けたいのですが、何も抽出されない場合は、何もしないもしくは見出しのみを貼り付けるようにしたいです。

作業をしてそれをマクロに記録しようとしているのですが、抽出されたものがある場合、C1を選び、ctrl+shift+矢印で、データがある一番下まで選択できますが、何も抽出されていない場合にそれをすると、シートの一番下までコピーされてしまい困っています。

どなたか助けていただけるとありがたいです。
よろしくお願いします

質問者からの補足コメント

  • うれしい

    ありがとうございます。フィルターを絞るのは別にマクロを作ってありますのでフィルター設定後で構いません。
    月曜日会社で試してみてから改めてお礼します

    No.1の回答に寄せられた補足コメントです。 補足日時:2018/01/19 23:55

A 回答 (2件)

No.1です。



うまくできないというコトですが、こちらでは原因が判りかねます。

もしかして、シートモジュールにしていませんか?
前回のコードは標準モジュールでないとうまく動かない場合もあります。

※ 複数シートの操作の場合、一般的には標準モジュールにした方が良いと思います。

他の原因ならごめんなさい。m(_ _)m
    • good
    • 0

こんばんは!



>H列のデータが特定のものを絞り、・・・
とありますが具体的にどのようなデータでフィルタを掛けるのか判らないので、
フィルタ設定後のコードにしてみました。

元データはSheet1にあり、Sheet2にコピー&ペーストするとします。

Sub Sample1()
Dim lastRow As Long, wS As Worksheet
Set wS = Worksheets("Sheet2")
wS.Cells.Clear
With Worksheets("Sheet1")
lastRow = .Cells(Rows.Count, "C").End(xlUp).Row '//←C列で最終行を取得している//
If .AutoFilterMode Then
If .AutoFilter.FilterMode Then
Range(.Cells(1, "C"), .Cells(lastRow, "N")).SpecialCells(xlCellTypeVisible).Copy wS.Range("A1")
Else
MsgBox "絞り込まれていません。"
End If
Else
MsgBox "オートフィルタが設定されていません。"
End If
End With
End Sub

※ とりあえずC列で最終行を取得するようにしています。m(_ _)m
この回答への補足あり
    • good
    • 0
この回答へのお礼

ありがとうございます。

会社にきて、やってみたのですが、うまくいきません。
初心者すぎて、何がダメなのかもよくわからないので、もう一度基礎的なところから勉強し直したいと思います。

お礼日時:2018/01/22 12:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!