• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルマクロでオートフィルタを貼り付け。VBA)

エクセルマクロでオートフィルタを貼り付け。VBA

このQ&Aのポイント
  • エクセルマクロを利用してオートフィルタを貼り付ける方法について学びます。
  • マクロを実行した際に表示されるシートの選択やデータの貼り付けが正常に行われない場合の訂正方法を教えてください。
  • マクロを作成する際に、マクロ名が重複して表示される場合の解決策をお教えください。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

>加工1シートにに貼り付ける事ができたのですが、 >「実行時エラー’1004’: RangeクラスのCOPYメソッドが失敗しました」 >となります。 仰有っていることの,状況のご説明が間違っていると考えられます。 貼り付けが出来たのなら,その時はエラーは出なかったハズです。 それとも貼り付けが出来たのにエラーも出たのなら,エラーは回答したマクロとは違う部分で起こっていると考えられます。 すんなりと貼り付けられる場合もあるし,エラーが出て止まる場合もありました,と言いたかったのだと想定して回答します。 >「実行時エラー’1004’: RangeクラスのCOPYメソッドが失敗しました」 これは回答で注意しておいた 再掲: >言わずもがなですが,マクロ1を実行してCSVを貼り付けを整形,オートフィルタが出来た後に,使います。 という条件を満たしていないと推定されます。 回答のマクロと他のマクロとの組み合わせを考える内に,全体の作業の流れの把握が出来なくなっているのではありませんか? いずれにしてもまず最初のステップとして,ご質問で掲示されていたMacro1(先の回答でもお話しした「CSVから貼り付けて列を整理し,必要な列にオートフィルタを取り付ける」)と,今回ご質問に回答したマクロのこの2つをまずは一緒にして,その部分の作業が自動でつるつるっと進むように,ご自分で検討を重ねてください。 その部分の合成が出来たら,更に次のステップとして他のマクロとの合体を一つずつ順を追って(それぞれのマクロが行う作業の段取りや前提条件,引き継ぎをよく考えながら)進めてみてください。

fasdsfa
質問者

お礼

再度流れを意識して、作業しなおしましたら上手くいきました。 ありがとうございました。

その他の回答 (2)

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

質問やコードが判りにくい。 例データでもあげて質問すること。 >CSV元データをここに貼り付ける」という名前のシート こんなのも早稲ぶり名シート名を例に挙げス、下記のように質問すればわかりらすいのだ。 ー- 例データ Sheet1のA列にデータがあるとする。 氏名 山田 太田 木村 加藤 山田 佐藤 山田 データーフィルターオートフィルター山田を選ぶ Sheet1の全セル選択(データ範囲でもよかろう)をコピー Sheet2のA1などを選択して貼り付け。 結果 Sheet2 氏名 山田 山田 山田 となった。 ーー マクロの記録を取ると Sub Macro4() Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="山田" Selection.Copy Sheets("Sheet2").Select Range("B1").Select ActiveSheet.Paste Range("C7").Select End Sub 質問と形は是全違う。 以上の私の操作で間違いはあるのか? ーー マクロの記録を取ったようだが、本質に関係のない操作を挟んでいないか。それをすると、質問異出すようなコードで無くなる。 よく考えて論点(質問点を絞って)を整理して、再質問したら。 ここはコードのエラーを見つけてもらうところではない。ヒントによって自分でみつける方便。

fasdsfa
質問者

お礼

ありがとうございます。 自分自身、例を挙げて説明すべきだとは思いましたが、何が原因かさっぱり わかりませんでしたので、そのままのデータを載せました。 質問がきちんとできるレベルに、知識を深める次第であります。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

マクロ2には肝心の「貼り付ける」の操作を記録できていないため,貼り付けを出来ていません。 (マクロを記録する操作をしたときに,貼り付けようとしたらエクセルがエラーを出して実行できなかったので,記録も出来なかったと推測されます) マクロ2を削除し,下記をコピー貼り付けて使います sub macro2r1()  activesheet.autofilter.range.copy worksheets("加工1").range("G12")  application.cutcopymode = false end sub 言わずもがなですが,マクロ1を実行してCSVを貼り付けを整形,オートフィルタが出来た後に,使います。

fasdsfa
質問者

お礼

丁寧なご解答、誠にありがとうございます。 上記内容のマクロを実行したら、加工1に貼り付ける事ができました。 G 12の部分だけ、A2に変更いたしました。 貼り付け先をA2にしたかったので。 ただ、加工1シートにに貼り付ける事ができたのですが、 「実行時エラー’1004’: RangeクラスのCOPYメソッドが失敗しました」 となります。 マクロは下記の内容になっております。 Sub 雑勘定管理業務2() ActiveSheet.AutoFilter.Range.Copy Worksheets("加工1").Range("A2") Application.CutCopyMode = False End Sub 原因がわかりかねますので、ご指導のほど、よろしく御願い申し上げます。 私としては、マクロ1からマクロ7までの作業を一つのマクロにまとめたいのですが、 上記のような実行時エラーが出てしまうと、一つのマクロにまとめれるのか分かり かねますので。

関連するQ&A