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

回答編集履歴

1

説明、コードの追記

2017/08/23 02:44

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -9,6 +9,9 @@
9
9
 
10
10
  MT = UserForm1.ComboBox1.Value
11
11
  ```
12
+ コンボボックスの選択した値は、下記のコードでも同じ結果になりますが、上記の方がシンプルです。
13
+ `MT = ComboBox1.List(ComboBox1.ListIndex)`
14
+ ただしリストボックスの場合は、こちらの方法になります。
12
15
 
13
16
  仕様が明確でないので提示のコードは精査してませんが、気になったことは、
14
17
 
@@ -21,4 +24,40 @@
21
24
  Dim X As Long, Y As Long
22
25
  Dim HHP(6) As String, ECO(6) As String, AAA As String
23
26
  ```
24
- とすべきですね。
27
+ とすべきですね。
28
+
29
+ 追記
30
+ ---
31
+ フォームの設計をみると Searchボタンが配置してあるので、これをクリックしたときに検索したいということだと思われます。 なので、標準モジュール(Module1)ではなく、検索するコードはこのコマンドボタンのクリック時に記述すべきですね。
32
+ ということで、UserForm1 のモジュールは下記のような感じになります。
33
+
34
+ ```
35
+ Option Explicit
36
+
37
+ 'Searchボタン
38
+ Private Sub CommandButton1_Click()
39
+ Dim X As Long, Y As Long
40
+ Dim HHP(6) As String, ECO(6) As String, AAA As String
41
+ Dim MT As String
42
+
43
+ MT = ComboBox1.Value
44
+ With ThisWorkbook.Worksheets("DATA")
45
+ With .Range("C2:J2").Find(waht:=MT)
46
+ X = .Row
47
+ Y = .Column
48
+ End With
49
+ '以下略
50
+
51
+ End With
52
+ End Sub
53
+
54
+ 'Closeボタン
55
+ Private Sub CommandButton2_Click()
56
+ Unload UserForm1
57
+ End Sub
58
+
59
+ Private Sub UserForm_Initialize()
60
+ ComboBox1.List = Range("C2:J2").Value
61
+ End Sub
62
+ ```
63
+ Searchボタンクリック時ではなく、コンボボックスで選択したら即検索したい場合は、Clickイベント`ComboBox1_Click()`に記述します。Changeイベントだと一文字入力しただけでも発生しますので、適切ではないですね。コンボボックスの場合、テキストに直接入力することを可能ですので。