3枚のワークシートがあり、それぞれのシートの2行目に検索(絞り込みたい)したい文字を入力、
フィルターオプションで絞り込み・それをリセットするようなプログラムをセルに直接
フォームボタンで作成したのですが、作成したプログラムを見ると同じような処理をボタンごとに
作っています。
無駄に見えるので、これらを効率よく1つのプログラムに収めたいのですが、
どのようにしたらよいかさっぱりで、どうか教えてください。
A | B | C | D | E |
---|---|---|---|---|
検索文字入力 | 検索文字入力 | 検索文字入力 | 検索文字入力 | 検索文字入力 |
あ | い | う | え | お |
か | き | く | け | こ |
… | … | … | … | … |
検索ボタン
リセットボタン
VBA
1Sub reset() 2 If ActiveSheet.FilterMode = True Then 3 ActiveSheet.ShowAllData 4 End If 5End Sub 6 7Sub search(searchRange, searchSource) 8 reset 9 ActiveSheet.range(range(searchRange), Cells(Rows.Count, 1).End(xlUp)).AdvancedFilter _ 10 Action:=xlFilterInPlace, _ 11 CriteriaRange:=ActiveSheet.range(searchSource), _ 12 Unique:=False 13End Sub 14 15Sub resetAfter_Click() 16 reset 17End Sub 18 19Sub resetDevice_Click() 20 reset 21End Sub 22 23Sub resetParts_Click() 24 reset 25End Sub 26 27Sub searchParts_Click() 28 Call search("A1:I1", "A1:I2") 29End Sub 30 31Sub searchDevice_Click() 32 Call search("A1:I1", "A1:I2") 33End Sub 34 35Sub searchAfter_Click() 36 Call search("A1:E1", "A1:E2")
たとえば以下を一つにしたいです。
VBA
1Sub resetAfter_Click() 2 reset 3End Sub 4 5Sub resetDevice_Click() 6 reset 7End Sub 8 9Sub resetParts_Click() 10 reset 11End Sub
VBA
1Sub searchParts_Click() 2 Call search("A1:I1", "A1:I2") 3End Sub 4 5Sub searchDevice_Click() 6 Call search("A1:I1", "A1:I2") 7End Sub 8 9Sub searchAfter_Click() 10 Call search("A1:E1", "A1:E2")
若干調べてみたところ、クラスモジュールを作成すれば、まとめられると伺ったのですが、
調べてもよくわかりませんでした。
勉強のため、ひとつご教授お願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/05 06:27