• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelマクロで他シートへの抽出:エラー)

Excelマクロで他シートへの抽出:エラー

このQ&Aのポイント
  • Excelマクロを使用してSheet1の特定の列に特定の値がある行をSheet2に抽出表示する処理を作成しました。しかし、実行するとSheet1の内容も抽出された内容に変わってしまいます。
  • エラーが発生している原因は、マクロが実行されているワークシートがSheet1のままであるためです。マクロを実行する際に、マクロが対象とするワークシートを指定する必要があります。
  • 解決方法として、マクロ内で`With Sheets('Sheet1')`のように対象とするワークシートを明示的に指定することで、Sheet1の内容が抽出されないようにすることができます。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.4

ご提示のコードは、Sheet1でオートフィルタを行い、その結果をこのコードが入っているシートのA1にコピーし、Sheet1のオートフィルタを解除しています。 Sheet1の内容を書き換える要素は入っていません。 ご提示のコードはコピペしたもので、一字一句実際のコードと同じですか?

trotrotron
質問者

補足

回答ありがとうございます。いろいろ試しました。 解決したような気がしますが、一応書かせてもらいます。 「異なっている点」 シート名が全角日本語に書き換えられています。 また抽出もとのSheet1にはフィルターが掛けられています。 新規ファイルに適当にデータを記入しこのVBAを試したら出来ました。 データにフィルターを掛けた状態で試すと、フィルターがなくなりますが出来ました。 コード末尾に.Range("A1:N1").AutoFilter Field:=10 を加えて、フィルターをつけ直すことができました。 そして最後に .Range("A1:N1").AutoFilter Field:=10 を最初のデータのコード最後に加えると、きちんとSheet1が表示されるようになりました。 .AutoFilterMode = Falseが効いていないのが原因でしょうか。 効かなかった理由がよくわかりませんが、元データにいろいろ加わっていた操作が 干渉したとしか考えられません。

その他の回答 (3)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

> Sheet1には何もいれていないはずです。 確認してください。

trotrotron
質問者

補足

確認しました(汗 何も入っていません。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

このコード、Sheet2にだけ入れてますか? Sheet1にも入っているんじゃないかと思います。

trotrotron
質問者

補足

Sheet1には何もいれていないはずです。

  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.1

問題がある・・・じゃなくて、その処理は 「シート2を開くと、シート1上でマクロの処理が動く」 プログラムになってますから、シート1上の内容が書き 変わっちゃって当然ですが? リンク先を見ると、そういう話を前提に組んでいたように 見受けられるんですが・・・。

trotrotron
質問者

補足

そうですか コードを見るとなんとなくそうなのかなぁという気はしてたのですが…… リンク先はSheet1の内容を抽出したいという話なので、 Sheet1が変わるのは不味いはずです。質問者さんも納得 しているみたいだったので、そんなことはないと思ったのですが。 これをSheet1の内容は変えないようにするにはどうしたらよいのでしょうか。

関連するQ&A

専門家に質問してみよう