No.2ベストアンサー
- 回答日時:
こんにちは。
>Err.Raise 513なんて初めて見ました。意図してないものがあった場合、エラーを発生させる??ってことなんでしょうか。
Err.Raise で、わざと、ユーザー定義エラーを発生させています。奇をてらったわけではなかったのですが、Goto を使わずに、 Resume Nextを活かす方法として、使ったものです。全シートを当たる方法として、別に他の方法でも良かったのですが、フィルターあるなしに関わらず、総当りしなくても済む方法として、この方法を使いました。
なお、FilterMode(見えない行がある状態) は、オートフィルタだけではありませんが、その点は、未だ不具合が存在しているかもしれません。
No.1
- 回答日時:
こんばんは。
「フィルターがついたままファイルを上書きして保存しようとする際に フィルタ解除して下さい」
というよりも、フィルタを解除させてしまったほうが早いとは思います。
ただ、私の記憶では、フィルターというのは、何もオートフィルターだけではないようなので、以下の場合、それらに該当できるかは試しておりません。
標準モジュールでも可能ですが、オートメーション化した時に、標準モジュールですと、素通りしてしまいます。
'//
'Thisworkbook モジュール
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim sh As Worksheet
On Error GoTo ErrHandler
For Each sh In ThisWorkbook.Worksheets
If Not sh.AutoFilter Is Nothing Or sh.FilterMode Then
Err.Raise 513
End If
Next
Exit Sub
ErrHandler:
If Err.Number = 513 Then
sh.Activate
If MsgBox(sh.Name & "フィルタを解除しますか?", vbOKCancel) = vbOK Then
sh.AutoFilter.Range.AutoFilter
Else
Cancel = True
MsgBox "フィルタを解除しないと保存できません。", vbExclamation
Exit Sub
End If
Resume Next
Else
MsgBox Err() & ": " & Err.Description
End If
End Sub
'///
この回答へのお礼
お礼日時:2015/08/29 21:55
こんばんは、
お忙しい中、回答頂きありがとうございます!
試したところ、結構イメージ通りにいけました! Err.Raise 513なんて初めて見ました。意図してないものがあった場合、エラーを発生させる??ってことなんでしょうか。
いつも、本当にありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelVBA ドロップボックスで月を選択するとそれ以降のデータが残るようにしたい。 3 2022/12/16 14:53
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/03/28 14:52
- Excel(エクセル) エクセルのファイルサイズが急に大きくなってしまった 4 2022/10/06 13:51
- Excel(エクセル) エクセルのフィルター後の並び替えについて 2 2023/05/10 04:00
- Visual Basic(VBA) ListView重複データ削除 2 2022/08/05 18:12
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Visual Basic(VBA) エクセルのマクロについて教えてください マクロを実行すると メッセージボックスが表示されて okをク 4 2023/07/05 19:32
- Excel(エクセル) 【VBA】PDF出力に任意のファイル名前を付ける方法 3 2023/07/21 10:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAでシートモジュール...
-
Excel VBA 『Call』で呼び出す...
-
VBA This Workbookモジュール...
-
Excel VBAでリンク切れをチェッ...
-
VBAで旧字体を異字体に一括で変...
-
モジュールとクラスの違いって...
-
VBでグローバル変数を宣言するには
-
VBAで別モジュールへの変数の受...
-
【vba】フォームに書いてあ...
-
グラフのX,Y座標を取得したい
-
VBA モジュールで共通に使う変...
-
Excel VBAで、ユーザーフォーム...
-
複数のフォーム間での変数宣言
-
ユーザー定義関数をEXCELに常駐...
-
Excelで時刻になったら知らせて...
-
エクセルVBA クラスモジュール...
-
モジュールとは何ですか
-
Excel VBA 定義されたプロージ...
-
モジュールからフォームのボタ...
-
VB2005ーDataGridViewの選択さ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでリンク切れをチェッ...
-
Excel VBA 定義されたプロージ...
-
ArduinoのジャイロモジュールMP...
-
ユーザー定義関数に#NAME?が返...
-
VBAで別モジュールへの変数の受...
-
Excel VBA 『Call』で呼び出す...
-
エクセルVBAでシートモジュール...
-
モジュールとは何ですか
-
VBA This Workbookモジュール...
-
VBでグローバル変数を宣言するには
-
グラフのX,Y座標を取得したい
-
モジュールの最大数はいくつな...
-
【vba】フォームに書いてあ...
-
VBAで旧字体を異字体に一括で変...
-
Excel VBAで、ユーザーフォーム...
-
Form間の値の渡し方
-
モジュールとクラスの違いって...
-
Access VBA標準モジュールにつ...
-
本当にPublicな変数(配列で)
-
標準モジュールを削除したい。(...
おすすめ情報
少し考えましたら、シートじゃなくて、標準モジュールでしょうか?上書き保存する時のコードの前に、if〜のような条件分岐したコードを書くのでしょうか?