回答編集履歴

3

説明修正

2019/12/18 05:02

投稿

hatena19
hatena19

スコア34073

test CHANGED
@@ -15,6 +15,10 @@
15
15
 
16
16
 
17
17
  上記のような仕様の場合のコード例
18
+
19
+ ただし、最初(テキストボックスが空欄)の場合は、全リストを表示することにしました。
20
+
21
+ (その方が使いやすいだろうということで)
18
22
 
19
23
 
20
24
 

2

コード追加

2019/12/18 05:02

投稿

hatena19
hatena19

スコア34073

test CHANGED
@@ -6,8 +6,80 @@
6
6
 
7
7
 
8
8
 
9
- 呈示のコードは、テキストボックスに入力した値と部分一致するデータがリストの先頭へ移動するというものですが、事前にリストボックスにリストを設定しておけば、正常に動作しました。
9
+ 呈示のコードは、テキストボックスに入力した値と部分一致するデータがリストボックスにあったらリストの先頭へ移動するというものですが、事前にリストボックスにリストを設定しておけば、正常に動作しました。([リンク先](https://ukkari-ukachan.com/page-67)にもそのような動作という説明があります。)
10
10
 
11
11
 
12
12
 
13
13
  もし、最初はリストボックスは空欄で、テキストボックスに入力した値と部分一致するものをリストボックスに表示させたいということなら一からコードを書き直す必要があります。
14
+
15
+
16
+
17
+ 上記のような仕様の場合のコード例
18
+
19
+
20
+
21
+ ユーザーフォームのモジュール
22
+
23
+ ```vba
24
+
25
+ Option Explicit
26
+
27
+ Private aryList As Variant
28
+
29
+
30
+
31
+ Private Sub LstCandidate_Click()
32
+
33
+ Me.txtSchBox.Value = Me.LstCandidate.Value
34
+
35
+ End Sub
36
+
37
+
38
+
39
+ Private Sub txtSchBox_Change()
40
+
41
+ Dim search As String
42
+
43
+ search = Me.txtSchBox.Value
44
+
45
+ If search = "" Then '空欄の場合は全リスト表示
46
+
47
+ Me.LstCandidate.List = aryList
48
+
49
+ Exit Sub
50
+
51
+ End If
52
+
53
+
54
+
55
+ Me.LstCandidate.Clear
56
+
57
+ search = "*" & Me.txtSchBox.Value & "*"
58
+
59
+
60
+
61
+ Dim Itm As Variant
62
+
63
+ For Each Itm In aryList
64
+
65
+ If Itm Like search Then
66
+
67
+ Me.LstCandidate.AddItem Itm
68
+
69
+ End If
70
+
71
+ Next
72
+
73
+ End Sub
74
+
75
+
76
+
77
+ Private Sub UserForm_Initialize()
78
+
79
+ aryList = Worksheets(1).Range("A1:A10").Value 'シートのリスト
80
+
81
+ Me.LstCandidate.List = aryList
82
+
83
+ End Sub
84
+
85
+ ```

1

誤字修正

2019/12/18 04:57

投稿

hatena19
hatena19

スコア34073

test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- 呈示のコードは、テキストボックスに入力した値と部分一致するデータがリストの先頭へ移動するというものですが、事前にリストボックスにリストを設定してけば、正常に動作しました。
9
+ 呈示のコードは、テキストボックスに入力した値と部分一致するデータがリストの先頭へ移動するというものですが、事前にリストボックスにリストを設定してけば、正常に動作しました。
10
10
 
11
11
 
12
12