プロが教える店舗&オフィスのセキュリティ対策術

原因が分かりません。宜しくお願いします。


エクセル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")
の箇所では、エラーメッセージもでませんが、コピーもされていないことを確認しています。


どのような原因が考えられるでしょうか?
または、どのような方法で原因追求が出来るでしょうか?

ご回答お待ちしています。

A 回答 (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


書かれている範囲で思い付くのは以上です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

原因は分かりませんでしたが、
コピー元の範囲指定でコピーを行う事で解決致しました。

<変更後ルーチン>
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

これまで、質問のルーチンで問題なかった点と、
コピー出来る時と出来ない時があるという現象に戸惑ったことで、
分かりにくい質問をしてしまい申し訳ありませんでした。

本当にありがとうございました。

お礼日時:2014/03/24 16:42

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