• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL VBA オートフィルで別シートへコピー)

EXCEL VBAオートフィルで別シートへコピーがうまくいかない

このQ&Aのポイント
  • EXCEL VBAを使用してオートフィルで別のシートにコピーしようとしたらうまくいかない問題が発生します。
  • コードを個別に書くと正常に動作しますが、コードを統合すると別のシートへのコピーがうまくいきません。
  • 詳細なコードの説明や解決策を教えていただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

適当に数字を入れて検証してみました。 どちらも、問題なく動作しました。 ただ、 一緒になったモジュールと別々のモジュールがあるとき 全体が貼り付けられる不具合が起こりました。 別々に書かれたモジュールと 一緒になったモジュール2つがあるのではないでしょうか? 別々になったモジュールを開放して 一緒になったモジュールだけにして実行してみてはどうでしょう? 理由はわかりませんが、同じ処理をするモジュールが同時に存在していると不具合が起こるのかもしれません。

Kaze2020
質問者

お礼

自分がやってみて分かった結論をかかせていただきます。 ”1から作り直したら動くようになりました。” モジュールを消したり確認しましたがやはり 結果はうまくコピーできませんでした。(ここは謎のままです) なので シートに余計な事を書いてある 表、関数、式、VBAを全てを省き シンプルに作り直した所 うまく動くようになりました モジュールを消すから、今回ヒントをもらい 作り直したのが正解だったみたいです 結論は、一つの表にごちゃごちゃ書かないで 基本の一つのデータは一つのシートで! を、やるべきだったのかもしれません。 ご助言ありがとうございました。

Kaze2020
質問者

補足

モジュールの関係があやしそうですね! ちょっと今EXCEL構うことができないので 夕方帰ってきたら試してみたいと思います。 今一番正解に近いような気がします 後ほど、又連絡させていただきます ありがとうございました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

既に回答が出ていて、正しいと思うが、 ・マクロの記録と ・Google照会「vba フィルター 結果 コピー」で照会して、 http://officetanaka.net/excel/vba/tips/tips155c.htm 絞り込んだ結果をコピーする などを見て、真似すれば済むことで、わざわざ、ここに質問するまでもない、有名課題でしょう。 ーー Sub Macro1() ' ActiveSheet.Range("a1").AutoFilter '----' Range("A1:A9").Select ActiveSheet.Range("$A$1:$A$9").AutoFilter Field:=1, Criteria1:="=*りんご*", _ Operator:=xlAnd '--- Range("A1").CurrentRegion.Copy Sheets("Sheet1").Range("G1") '--- ActiveSheet.Range("a1").AutoFilter End Sub ----- 肝は CurrentRegion. の理解にあると思う。 ーーー データ例 A列 品物 りんご みかん ブドウ りんごジュース りんごつめあわせ 紅玉りんご 夏みかん キウウィ ーー 結果 G列 品物 りんご りんごジュース りんごつめあわせ 紅玉りんご 最後の行 ActiveSheet.Range("a1").AutoFilter を入れておかないと、「あれ」と思うかも。

Kaze2020
質問者

補足

最後の行アクティブにしておかないと 他の人がみたらそうかもしれないですね! 返答ありがとうございました!

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

どちらも問題なく動作しました。 F8でステップ実行するか 最後の Range("A1").AutoFilter をコメントにして、実際にフィルターが機能しているか確認してみてはいかがでしょう。 また Worksheets("時間合計VB").Select をやめて以下のようにしてみてはいかがでしょう。 Sub 抽出別シート() '1h以下をを抽出別シートへコピー With Worksheets("時間合計VB") .Range("A1").AutoFilter field:=8, Criteria1:="<=1" '1時間以下の8列目のをフィルター .Range("A1").CurrentRegion.Copy Sheets("1hdown").Range("A1") 'それをカレントして別シートのA1へコピー .Range("A1").AutoFilter End With End Sub

Kaze2020
質問者

補足

そうでしたか。 自分の家のやつではうまく貼りつかなくて困ってしまっています 返答ありがとうございました!

関連するQ&A