teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

コードの追加

2018/06/04 06:36

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -17,4 +17,22 @@
17
17
  シート名は、"Parts", "Device", "After" と推定しています。
18
18
 
19
19
  ちなみに、クラスモジュールを使えるのは、ActiveXコントロールのボタンになります。
20
- フォームコントロールのボタンの場合は、簡単に一つのマクロを複数のボタンに登録できます。
20
+ フォームコントロールのボタンの場合は、簡単に一つのマクロを複数のボタンに登録できます。
21
+
22
+ おまけ
23
+ ---
24
+ シートが多いので Select Case が長くなる、シートの追加、削除が発生する、というようなときは、
25
+ Application.Caller と AlternativeText を使って下記のようにするととメンテナンスが楽になります。
26
+
27
+ ```vba
28
+ Sub search_Click()
29
+ Dim rngs
30
+ rngs = Split(ActiveSheet.Shapes(Application.Caller).AlternativeText, ",")
31
+
32
+ Call search(rangs(0), rangs(1))
33
+ End Sub
34
+ ```
35
+ ボタンの書式設定の「代替テキスト」に
36
+ A1:I1, A1:I2
37
+ と対象のセル範囲を設定しておきます。
38
+ シートを追加したり、シート名を変更してもコードの修正は不要になります。

1

コード修正

2018/06/04 06:36

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -4,20 +4,17 @@
4
4
 
5
5
  検索ボタンはシートによって対象範囲が異なるので、Select Caseなどで場合分けする必要がありますので、下記のようなマクロを作成して、マクロの登録でsearch_Clickを選択してください。
6
6
 
7
-
8
7
  ```vba
9
8
  Sub search_Click()
10
- With ActiveSheet
11
- Select Case .Name
9
+ Select Case ActiveSheet.Name
12
- Case "Parts", "Device"
10
+ Case "Parts", "Device"
13
- Call search("A1:I1", "A1:I2")
11
+ Call search("A1:I1", "A1:I2")
14
- Case "After"
12
+ Case "After"
15
- Call search("A1:E1", "A1:E2")
13
+ Call search("A1:E1", "A1:E2")
16
- End Select
14
+ End Select
17
- End With
18
15
  End Sub
19
16
  ```
17
+ シート名は、"Parts", "Device", "After" と推定しています。
20
18
 
21
-
22
19
  ちなみに、クラスモジュールを使えるのは、ActiveXコントロールのボタンになります。
23
20
  フォームコントロールのボタンの場合は、簡単に一つのマクロを複数のボタンに登録できます。