• ベストアンサー

Excel2000とExcel2007のオートフィルター機能の互換性

Excel2007のマクロでRange("A1")に特定の語句でオートフィルターをかけています。保存ファイル形式はExcel2000-2003互換です。1ヶ月まえ作製したときにはExcel2000でも問題なく動作することを確認していましたが、最近開いてみるとなぜか複数(22枚中4枚ほど)のシートにたいしてのみRangeクラスのエラーが発生してしまいます。しかし、Excel2007で開いてみると同じエラーが発生しません。参考までにコードを書きます。何かおかしいでしょうか?他のシートでは同じコードで問題ないのですが・・・。 コード:Sheet6.Range("A1").AutoFilter Field:=1, Criteria1:= _ "=*07??", Operator:=xlAnd

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

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

今回のケースとは少し違う話ですが、 私の職場で、エクセルの2007と2002が混在した時期があって、 2002で普通に使用できたマクロは2007でも使用できましたが、 2007で保存した後に、2007ではマクロが使用できるけど、2002ではエラーが出る現象がありました。 このマクロにはグラフを操作する内容が含まれていたのですが、 この時の原因は、2002で使用していた時はグラフ名が『グラフ 1』 2007で保存した後にはグラフ名が『Chapter 1』と変わっていて、VBAでは『グラフ 1』を操作する命令なのでエラーが出ました。 2007では、『グラフ 1』の命令でも『Chapter 1』を操作してくれました。 なので、一旦2007で開いたものは、何かしらファイル内で変化があるかもしれません。 今回の例ですと、『Sheet6』の部分が変化している事はないでしょうか? シートの挿入、削除を繰り返すと、変化する可能性がある部分なので、 Sheets("シート名").Range("A1")...... Worksheets(1).Range("A1")...... などと変更すれば回避できないでしょうか?

tatekenta
質問者

お礼

ご指摘ありがとうございました。試してみましたが、残念ながら改善できませんでした(^^;)

その他の回答 (2)

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

>Excel2000とExcel2007のオートフィルター機能の互換性 そんな大げさな話でなく、データの有り様の問題だと思います。 #1でご指摘の点を中心に、エラーが起こるシートのデータの特徴(ありなしを中心に)を捉えることが必要です。 空白、該当なしなども含めてチェックする。 そしてそれだけ際立たせたデータでやってみる。

tatekenta
質問者

補足

#1の方への補足と同じです。何か他に考えられることはありませんか?

回答No.1

A列にデータ自体が無くオートフィルターを付けようとしていませんか? オートフィルターがついていればA列にデータが無くても動くはずです。

tatekenta
質問者

補足

一応ヘルプからフィードバックできる分は対策として講じております。しかしながら、データで埋めても何も起こらないんです。そのた、作成時に他シートへのリンクが貼られたりしていないかも見たり、考え付く「他のシートと違う条件の是正」は施したつもりなんですが・・。

関連するQ&A

専門家に質問してみよう