アプリ版:「スタンプのみでお礼する」機能のリリースについて

データのあるシートから、一定の条件にあうデータを当初から用意した作業用シート抜き出してきた上で、抜き出したシートの1つの列にあるデータ集から重複のないデータを抜き出すため、advancedfilterを使用しています。
別のサブルーチンを作成して、同一作業用シートを使い回す形で上記の作業を実行すると、表題のみコピーしてデータをコピーしなくなる現象が生じました。
作業用シートを削除して、新たにシートを挿入して作業用シートと名前を付けて、advancedfilterを実行すると、正常に機能しました。
このような現象がおきる理由をご教示願います。
この現象を避けるには、作業用シートをサブルーチンごとに挿入・削除を繰り返す必要が生じ、処理スピードが落ちると予想されます。
よき、アドバイスがあればよろしくお願いします。

Sub フィルター()
Dim rows As Double

'重複を削除した番号リスト作成
With Worksheets("作業用")
rows = .Range("b65536").End(xlUp).Row

.Range(.Cells(6, 3), .Cells(rows, 3)).AdvancedFilter Action:=xlFilterCopy, _
copytorange:=.Range("N6"), unique:=True

End With
End Sub

A 回答 (1件)

直接の回答ではありませんが、


VisualBasicEditorから、
Application.ScreenUpdating = False
に設定してステップ実行し、
実際に動いているところを見てデバックしてみると
すぐ問題点が判明するかもしれません。

関係ないかもしれませんが、一つ気になる点として、
dim Rows as Double
の変数名は、エクセルが混乱してよろしくない気がしますので、
dim lRow as Long
などのほうが良い気がします。
    • good
    • 0
この回答へのお礼

ご教示ありがとうございます。
重複データなしのデータを抽出するためadvancedfilterを実行する際にCriteriaを指定しないでコードを実行するとVBAが自動的にシート上のセルにCriteriaという名前をつけており、そのCriteriaが残ることが問題なことが分かりました。
このCriteriaという名前を削除するコードを加えたところ、正常に機能するようになりました。
このCriteriaという名前が自動的に作成される現象については、別に質問をしてみたいと思っています。

お礼日時:2007/05/13 09:00

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