ハマっている「お菓子」を教えて!

お世話になります。
VBAを初心者なのですが、質問させてください。

タイトルにありますように、まず
Sheet1 でオートフィルタで抽出したものをコピーして
Sheet2 に貼り付ける。 次に
Sheeet1 の抽出したセル行を削除する 
また、この際に「削除しますか?」という質問もいれる。

というマクロを組みたいと考えています。


以下の通り、過去のソースから Sheet2 に貼り付けることまでは
できたのですが、Sheet1 の行削除をどのように組めばいいのか
検討がつきません。

ご教授よろしくお願い致します。

Sub Sample()
Const SHEET_COPY As String = "Sheet1"
Const SHEET_PASTE As String = "Sheet2"

Worksheets(SHEET_COPY).Range("a2:e" & _
Worksheets(SHEET_COPY).Range("a1").CurrentRegion.Rows.Count).Copy
Worksheets(SHEET_PASTE).Range("a" & _
Worksheets(SHEET_PASTE).Range("a1").CurrentRegion.Rows.Count + 1).PasteSpecial Paste:=xlPasteAll
End Sub

A 回答 (2件)

こんばんは!



フィルタで絞り込まれている時だけマクロを実行するようにしてみてはどうでしょうか?
一例です。

Sub Sample1()
Dim lastRow As Long, lastCol As Long
Dim myRng As Range, wS As Worksheet
Set wS = Worksheets("Sheet2")
With Worksheets("Sheet1")
If .FilterMode Then
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row '←A列で最終行を取得//
lastCol = .Cells(1, Columns.Count).End(xlToLeft).Column '1行目で最終列を取得//
Set myRng = Range(.Cells(2, "A"), .Cells(lastRow, lastCol)).SpecialCells(xlCellTypeVisible)
myRng.Copy wS.Cells(Rows.Count, "A").End(xlUp).Offset(1)
If MsgBox("コピー&ペーストした範囲を削除しますか?", vbYesNo) = vbYes Then
myRng.Delete shift:=xlUp
End If
Else
MsgBox "絞り込まれていません"
End If
End With
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございます。
一例がありますと、大変参考になります。
活用させていただきます。

お礼日時:2016/03/28 17:15

Worksheets(SHEET_COPY).Rows(2 & ":" & Rows.Count).Delete


とかで出来るかと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
そのようなやり方があるのですね。
勉強になりました。

お礼日時:2016/03/28 17:14

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