こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

EXCELのVBAを実行したら止まってしまいます。。。

お世話になります。
下記のマクロを作ってみたのですが、シート「読込」にコピーされたところまで確認できるのですが、その後マウスが砂時計になって、動かなくなってしまいます。オートフィルタを解除する部分を削って実行してみましたが、同じところで止まりますので、貼付のところに問題があるようなのですが、何がいけないのでしょうか?
また、なんかもっとスマートなプログラムになりませんでしょうか?
宜しくお願いします。

Sub test()

Sheets("Normal").Select
Range("A2").Select

Selection.AutoFilter Field:=1, Criteria1:=Sheets("読込").Range("B2"), _
Operator:=xlAnd, Criteria2:=Sheets("読込").Range("C2")
Selection.SpecialCells(xlVisible).Copy

Sheets("読込").Select
Range("C3").Select
ActiveSheet.Paste

Sheets("Normal").Select
Application.CutCopyMode = False
ActiveSheet.ShowAllData
Selection.AutoFilter


End Sub

投稿日時 - 2003-06-13 10:17:38

QNo.573733

すぐに回答ほしいです

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

こんにちは。

(1)オートフィルタの条件を、And条件で2つ設定しているようですが、この設定自体は正しいのですか?Orではないのですか?なんか、条件に合致するデータが出てこないような気がするんですが。

(2) Selection.SpecialCells(xlVisible).Copy
で可視セルをすべてコピーしていますが、ふつうにRangeとかでコピー元を指定したほうがいいような気がします。(Rangeでコピーしても、フィルタで非表示のセルはコピーされません。)

(3) ActiveSheet.Paste
がおかしいと思います。Pasteメソッドはコピー元のセルとコピー先のセルの選択領域の形が違うと、ペーストできません。PasteSpecialあたりをつかうと、いいかもしれませんね。
あと、ActiveSheetに対して貼り付けるんではなくて、Selectionに対して貼り付けなのではないでしょうか?

Selection.PasteSpecialとしてみるとか。

投稿日時 - 2003-06-13 10:42:56

補足

ありがとうございます。
(1)ですが、日付が条件としてあります。5/1~5/31のデータを抜き出したいのでB2には>=2003/5/1、C2には<=2003/5/31になっています。確認しましたが、抜き出しデータは間違っていないようなので、式は多分大丈夫です。
(2)(3)ありがとうございます。早速変更してみます。

投稿日時 - 2003-06-13 11:18:18

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

AutoFilterが使えるのは 読込のシートだけなのでは?

もしくは NormalのシートもSelection.AutoFilter してあげたらいいのでは?

投稿日時 - 2003-06-13 10:23:54

補足

ありがとうございます。でも、ごめんなさい。意味がちょっと解らないのですが・・・
現状は、Normalシートにフィルタがかかり、可視部分がコピーされ、読込シートのC3に貼付がかかるところまでは実行されています。ですので読込シート以外でもAutoFilterは使えていると思います。
どこかに「Selection.AutoFilter」を入れればいいのでしょうか?

投稿日時 - 2003-06-13 10:39:46

あなたにオススメの質問