• 締切済み

エクセル VBA シートのコピーが上手く出来ない

原因が分かりません。宜しくお願いします。 エクセルVBAで、フィルターを掛けたシートを別シートへコピーしています。 問題なく出来ていたルーチンでしたが、他の作業の影響か、 気がついたらコピー出来なくなっていました。 他のシートでも同じ方法でコピーを行っていますが、問題ありません。 問題のコーディングは以下のとおりです。 Worksheets("work2").Unprotect Worksheets("work2").Range("A:Z").ClearContents Worksheets("コピー元").Range("A5").AutoFilter Field:=6, Criteria1:=フィルタ請求年1, Operator:=xlOr, Criteria2:=フィルタ請求年2, VISIBLEDROPDOWN:=True Worksheets("コピー元").Range("A1").CurrentRegion.SpecialCells(xlVisible).Copy Worksheets("work2").Range("A1") Worksheets("work2").Protect Worksheets("コピー元").Range("A1").CurrentRegion.SpecialCells(xlVisible).Copy Worksheets("work2").Range("A1") の箇所では、エラーメッセージもでませんが、コピーもされていないことを確認しています。 どのような原因が考えられるでしょうか? または、どのような方法で原因追求が出来るでしょうか? ご回答お待ちしています。

みんなの回答

回答No.1

上記、コーディングであれば、該当するデータないのではないかと思われます。 オートフィルターでselectしたデータをコピーするのであれば、 1.A5 でなく、A5:F99 とデータの範囲を指定すべきかと思います。 2.フィールドが6を指定しているので、A列から数えてF列にある"フィルタ請求年1"と"フィルタ請求年2"を   selectするのではないでしょうか。 よって、下記のように訂正すれば出来るのではないかと思われます。 Worksheets("コピー元").Range("A5:F99").AutoFilter Field:=6, Criteria1:="フィルタ請求年1", Operator:=xlOr, Criteria2:="フィルタ請求年2", VISIBLEDROPDOWN:=True 書かれている範囲で思い付くのは以上です。

oshigotox
質問者

お礼

ご回答ありがとうございました。 原因は分かりませんでしたが、 コピー元の範囲指定でコピーを行う事で解決致しました。 <変更後ルーチン> Worksheets("コピー元").Range("A5").AutoFilter Field:=6, Criteria1:=フィルタ請求年1, Operator:=xlOr, Criteria2:=フィルタ請求年2, VISIBLEDROPDOWN:=True Worksheets("コピー先").Unprotect Worksheets("コピー元").Range("A1:Z" & Worksheets("コピー元").Range("A65536").End(xlUp).Row).Copy Sheets("コピー先").Range("A1").PasteSpecial Worksheets("コピー先").Paste これまで、質問のルーチンで問題なかった点と、 コピー出来る時と出来ない時があるという現象に戸惑ったことで、 分かりにくい質問をしてしまい申し訳ありませんでした。 本当にありがとうございました。

関連するQ&A