
あるエクセルファイルがあり、
その一枚のシートにはオートフィルタ
(A~Z列まで)を使用しています。
【質問1】
ファイルを保存して閉じる際、
オートフィルタで抽出したものを
「すべて」に戻す、
つまりなにも抽出されていない(=左端の行番号が黒字)
に戻すマクロはどこにどのように書けばよいでしょうか?
オートフィルタを戻すマクロは、
'オートフィルタのあるシートを選択
Sheets("買取リスト").Select
'T列のオートフィルタを「すべて」にする
Selection.AutoFilter Field:=22
というところまでは理解できました。
【質問2】
上記のマクロを
Sheets("顧客リスト")
から、Sheets("商品リスト")へ移動した際、
ボタン等を使用せずに、
(ただ、下のタブをクリックするだけで)
実行させることは可能でしょうか?
可能であれば、どこにどのように記述すれば
よいでしょうか??
よろしくお願いします。
No.5ベストアンサー
- 回答日時:
こんばんわ。
これが30本あれば、一本一本すべてにしていくので、時間がかかるのではないかと危惧して、・・・・・・・・
すっきりとした1発解除方法は無いようです。オートフィルターを一度画面から消して再度同じ場所に表示するという方法を取るか、Selection.AutoFilter Field:=22をオートフィルターの数だけ書くという方法しかないようです。オートフィルターの理屈を考えてみれば、お解りになると思います。
>質問2に関しては、ワークシートのタブをダブルクリックする習慣が私も含めありませんので、できればシングルクリックで、実行できる方法があればご教示ください。
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
ここに、コードを書く。
End Sub
シートが選択されてアクティブになった時点でマクロが走り出します。
ご不明な点がございましたらご遠慮なく補足要求して下さい。
No.6
- 回答日時:
再びこんにちは。
A1から始まるフィールドデータを想定してたので、UsedRangeで良いかと思ったんですが各シート毎にフィルター範囲が異なるなら、それを保持するようにしないとダメです。
標準モジュールに書く
Sub Auto_Close()
Dim ws As Worksheet
Dim r As Range
For Each ws In Worksheets
If ws.AutoFilterMode Then
Set r = ws.AutoFilter.Range
ws.AutoFilterMode = False
r.AutoFilter
End If
Next ws
Set r = Nothing
End Sub
ThisWorkBookに書く
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim r As Range
If Sh.AutoFilterMode Then
Set r = Sh.AutoFilter.Range
Sh.AutoFilterMode = False
r.AutoFilter
End If
Set r = Nothing
End Sub
前回の最後にも書いた通りサンプルです。
どんなシート構成でどんな使用を想定しているか等、言葉で伝えるのは難しいですし、こちらは想像でしか書けません。
ご自身で修正する努力も必要かと思いますよ。
>ご自身で修正する努力も必要かと思いますよ。
おっしゃる通りですね。
何度もお答えいただきまして、
ありがとうございました。
お蔭様で希望どおりのものができました。
No.4
- 回答日時:
こんにちは。
▼を残したまま、抽出を解除する方法はありませんでしょうか?
Selection.AutoFilter Field:=22この式で、ボタンは消えずに抽出は解除できると思うのですが、何か不具合があるのでしょうか?どのような不具合なのかを教えて下さい。
>質問2に関しては、ワークシートのタブをダブルクリックする習慣が私も含めありませんので、できればシングルクリックで、実行できる方法があればご教示ください。
ダブルクリックで実行するのが一番早い解決方法なのですが、どうしてもお好みで無いならば、マクロを走らせるタイミングと貼り付けするシートのシート名を教えて下さい。
お手数をおかけいたします。よろしくお願いいたします。
この回答への補足
> Selection.AutoFilter Field:=22
これは、22列目(T列)のフィルタを
すべてにする式ですよね。
これが30本あれば、一本一本すべてにしていくので、
時間がかかるのではないかと危惧して、
一発解除(ただし、フィルタは残したまま)
はないものかと思って、再質問させていただいた次第です。
>マクロを走らせるタイミング
任意のタブをクリックした場合
シート名
買取
得意先
在庫
>貼り付けするシートのシート名
list
が、フィルターを解除したいシート名です。
どうぞよろしくお願いします。
No.3
- 回答日時:
初めまして。
【質問1】
オートフィルターがかかっているブック名をA・行を1行目として
workbooks("A.xls").worksheets("シート名").rows("1:1").Autofilter
これでオートフィルターが削除され、選択されていない状態に戻ります。
【質問2】
ThisWorkbookのモジュールシートで下記のイベントを利用すればよろしいかと思います。
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
End Sub
これを使うと、シートのタブをダブルクリックした時にマクロが走り出します。
ご不明な点等がございましたら、ご遠慮なく補足要求して下さい。
この回答への補足
上記マクロを実行すると、
オートフィルタが解除されてしまい、
▼のアイコンがなくなってしまいます。
▼を残したまま、抽出を解除する方法はありませんでしょうか?
質問2に関しては、
ワークシートのタブをダブルクリックする習慣が
私も含めありませんので、できればシングルクリックで、
実行できる方法があればご教示ください。
No.2
- 回答日時:
こんにちは。
標準モジュールに下記でブックを閉じる時にフィルターを全て戻します。
Workbook_BeforeClose イベントでも同じです。
Sub Auto_Close()
Dim ws As Worksheet
For Each ws In Worksheets
If ws.AutoFilterMode Then
ws.AutoFilterMode = False
ws.UsedRange.AutoFilter
End If
Next ws
End Sub
ThisWorkbookに下記で、アクティブになった時にフィルターを解除します。
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.AutoFilterMode Then
Sh.AutoFilterMode = False
Sh.UsedRange.AutoFilter
End If
End Sub
サンプルなので、Range指定がシートによっては上手くいかないかも。。。
ご教示ありがとうございます。
早速試したところ、
おおっ!っと思ったのですが、
よくみると、
オートフィルタのある行がずれていました。
オリジナルは、
シート1は、A10:AO10にあったのがA1:CS10に。
シート2は、A3:AO3にあったのが、A2:BC2に、
フィルタが移動してしまいました。
この解決策はございますか?
No.1
- 回答日時:
質問1
VBEditor の オブジェクトエクスプローラー で ThisWorkbookをダブルクリックします。
表示されたコード内で、次のいずれかのイベントプロシージャの中にマクロを記入してみてください。
'--------------------------------------------------------
Private Sub Workbook_BeforeClose(Cancel As Boolean)
End Sub
'--------------------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
End Sub
'--------------------------------------------------------
Private Sub Workbook_Open()
End Sub
それぞれの違いについてはヘルプ等をご参考に・・・
質問2
質問1と同じ場所で次のプロシージャの使います
'--------------------------------------------------------
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) DisplayAlertsブロパティで ”実行時エラー424オブジェクトが必要です” 5 2022/05/15 18:02
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルのオートフィルターのしぼりをクリアーしたい 2 2022/12/24 08:36
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/06/02 08:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Visual Basic(VBA) 前回質問の続きになりますが、下記マクロでシート1からシート2の抽出項目セルB3「りんご」とセルC2「 2 2022/12/02 17:37
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【 Excel】シートの見出しに自...
-
【マクロ】【相談】Excelブック...
-
VBAで条件によってシート見出し...
-
シートを保護した時でも並べ替...
-
コマンドボタンがデザインモー...
-
エクセルのVBAで集計をしたい
-
マクロを特定の複数シートで実...
-
エクセル2013でマクロのボタン...
-
Excelのマクロの呼び出し元を知...
-
エクセルVBAでcmbBoxのプロパテ...
-
EXCELのエラー
-
Excelで,特定のシートを開いた...
-
マクロを複数シートに実行する...
-
エクセルを開いたとき常に同じ...
-
Excel:複数シートから条件に合...
-
excelの不要な行の削除ができな...
-
EXCELのVBAで複数のシートを追...
-
エクセルの選択範囲以外を削除...
-
エクセルファイルのシート毎の容量
-
文字の色も参照 VLOOKUP
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドボタンがデザインモー...
-
エクセルのVBAで集計をしたい
-
エクセルを開いたとき常に同じ...
-
マクロを複数シートに実行する...
-
【 Excel】シートの見出しに自...
-
Excelのマクロの呼び出し元を知...
-
EXCELでマクロを使わずに図形の...
-
マクロ 各シートの決められた位...
-
エクセルでシートの並び替えで...
-
EXCELのエラー
-
EXCELでワークシートを開いたら...
-
メッセージボックスでシート名...
-
マクロを特定の複数シートで実...
-
VBA シート名を先月の名前に...
-
マクロで複数シートに条件付き...
-
エクセルで、マクロボタンの表...
-
VBAで条件によってシート見出し...
-
【Excel】複数あるシート上の住...
-
エクセルVBAでcmbBoxのプロパテ...
-
エクセルのチェックボックス
おすすめ情報