マクロについて勉強中の者です。

"Sheet1"にあるデータをオートフィルタで抽出し、
"Sheet2"に抽出データのみをコピーをしたいと思っています。

Range("A10:G59").Select
Selection.ClearContents

With Worksheets("Sheet1").Range("A1")
.AutoFilter
.AutoFilter Field:=1, Criteria1:="○"
.CurrentRegion.SpecialCells(xlCellTypeVisible).Copy Worksheets("Sheet2").Range("A9")
End With

End Sub

としてみたのですが、
これを実行すると、オートフィルタが1行目(A1)ではなく、
2行目で設定されてしまい、抽出データがずれてしまいます。

   A    B    C
1 品 名  仕入先  発注数 ←タイトル行に設定したい
2 りんご  ヤマト   10  ← この行に▼が設定される

色々調べた結果のマクロなので、どこが悪いのか見当がつきません。
解りやすく教えていただける方がおられましたら、よろしくお願い致します m(__)m

このQ&Aに関連する最新のQ&A

A 回答 (2件)

こんにちは。



ご質問者さんのコード自体は、間違いではないと思います。私の知っている限りでは、そういう現象は、オートフィルタにはないからです。何かバグに近いような気がしますが……。
Excelのバージョン等は分かりますか?詳しく調べてみないと分からないです。

一応、ためしに書き換えてみましたが、これは、別にに、ご質問の要件の部分には解決していないような気がします。以下は、.Range("A1").CurrentRegion は、.Range("A1") でも、経験的には同じはずです。

Sub Test1()
  Worksheets("Sheet2").Range("A10:G59").ClearContents
  With Worksheets("Sheet1")
    If .AutoFilterMode Then
      .AutoFilterMode = False
    End If
    With .Range("A1").CurrentRegion
      .AutoFilter Field:=1, Criteria1:="○" '品名を入れる
      .SpecialCells(xlCellTypeVisible).Copy Worksheets("Sheet2").Range("A9")
    End With
  End With
End Sub

この回答への補足

早々のご対応ありがとうございます。

>ご質問の要件の部分には解決していないような気がします
と仰いますが、ここまできちんとコードを作っていただきましたし、
さっそく試してみます。

またご報告させていただきますね!

補足日時:2009/05/18 21:15
    • good
    • 0
この回答へのお礼

ご報告が遅くなって申し訳ありません m(__)m

作成していただいたコードを必要な形に修正して
新規で作成したのですが、問題なく作動してくれました!

Wendy02様のコードですと、オートフィルタの解除が
きちんと書かれていますが、当方にはありません。
もしかしたら、この辺が上手く作動しなかった原因でしょうか。

何にせよ、まだまだ発展途上ですので
これを機会にまた勉強していきたいと思います。
今回は本当にありがとうございました♪

お礼日時:2009/05/20 13:46

回答ではありませんが、



マクロの自動記録を開始し、やりたい動作を行って、記録終了
→結果を見ればHINTになると思います。

この回答への補足

早々のご対応、ありがとうございます。
自動記録はためしにやってみたんですが、
抽出データのコピーが上手くいかなくて… (>_<)
見比べてみたら、違いはWith~の4行目のみなので、
もう少し調べてみます。

補足日時:2009/05/18 20:57
    • good
    • 0
この回答へのお礼

無事に解決いたしました。
早々に対応いただきまして、本当にありがとうございました。

お礼日時:2009/05/20 13:50

このQ&Aに関連する人気のQ&A

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


人気Q&Aランキング