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

こんばんわ。
現在、コマンドボタン(オートフィルタの設定)にオートフィルタを設定するようなマクロを登録しています。
そして、別のコマンドボタンにはオートフィルタの解除を実施するマクロを書きたいんです。

しかし、オートフィルタを設定していない時に、解除のマクロを実行するとエラーになってしまいます。どうしたら良いのでしょうか?

If・・・文を使って、対象セルにオートフィルタが設定している時は解除を実施し、オートフィルタが設定されてない時は、何も実施しない。

このようなマクロはどうしたら良いのでしょうか?

よろしくお願いします。

A 回答 (2件)

フィルタされていないシートに対して実行すると、


実行時エラー'1004':WorksheetクラスのShowAllDataメソッドが失敗しました。
というエラーが出ます(多分)

対象のシートが必ずアクティブなら、
If ActiveSheet.AutoFilterMode Then
 'オートフィルタを解除
 ActiveSheet.AutoFilterMode = False
End If


対象のシートがアクティブでなく、シートを指定する必要があるなら
If Worksheets("sheet1").AutoFilterMode Then
 'オートフィルタを解除
Worksheets("sheet1").AutoFilterMode = False
End If
(シート名は適時変更要)

これで、どうでしょうか?
    • good
    • 4
この回答へのお礼

上記のマクロで解決しました。
ありがとうございます。

お礼日時:2008/06/05 22:02

既に正解が出されましたが、せっかく打ち込んだので...


一番安直なのは、
エラーが出たら何もしないで終了させる
Sub test1()
On Error GoTo errorHandle
'ここに処理を記す
errorHandle:
End Sub
まっとうな方法は、AutoFilterModeで分岐する
Sub test2()
Dim sh As Worksheet

Set sh = ActiveSheet
If sh.AutoFilterMode = True Then
'ここに処理を記す
End If
End Sub
上記のコードをコピペしないで、打ち込んで行くと、sh.まで打ち込んだ時点で、インテリセンスという奴で、メンバーが表示されるので、どんなものがあるかご確認して、ご活用下さい。
    • good
    • 2

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