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

回答編集履歴

3

説明修正

2019/12/18 05:02

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -7,6 +7,8 @@
7
7
  もし、最初はリストボックスは空欄で、テキストボックスに入力した値と部分一致するものをリストボックスに表示させたいということなら一からコードを書き直す必要があります。
8
8
 
9
9
  上記のような仕様の場合のコード例
10
+ ただし、最初(テキストボックスが空欄)の場合は、全リストを表示することにしました。
11
+ (その方が使いやすいだろうということで)
10
12
 
11
13
  ユーザーフォームのモジュール
12
14
  ```vba

2

コード追加

2019/12/18 05:02

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -2,6 +2,42 @@
2
2
 
3
3
  これはどのタイミングでしてますか。UserForm_Initialize ですか。
4
4
 
5
- 呈示のコードは、テキストボックスに入力した値と部分一致するデータがリストの先頭へ移動するというものですが、事前にリストボックスにリストを設定しておけば、正常に動作しました。
5
+ 呈示のコードは、テキストボックスに入力した値と部分一致するデータがリストボックスにあったらリストの先頭へ移動するというものですが、事前にリストボックスにリストを設定しておけば、正常に動作しました。([リンク先](https://ukkari-ukachan.com/page-67)にもそのような動作という説明があります。)
6
6
 
7
- もし、最初はリストボックスは空欄で、テキストボックスに入力した値と部分一致するものをリストボックスに表示させたいということなら一からコードを書き直す必要があります。
7
+ もし、最初はリストボックスは空欄で、テキストボックスに入力した値と部分一致するものをリストボックスに表示させたいということなら一からコードを書き直す必要があります。
8
+
9
+ 上記のような仕様の場合のコード例
10
+
11
+ ユーザーフォームのモジュール
12
+ ```vba
13
+ Option Explicit
14
+ Private aryList As Variant
15
+
16
+ Private Sub LstCandidate_Click()
17
+ Me.txtSchBox.Value = Me.LstCandidate.Value
18
+ End Sub
19
+
20
+ Private Sub txtSchBox_Change()
21
+ Dim search As String
22
+ search = Me.txtSchBox.Value
23
+ If search = "" Then '空欄の場合は全リスト表示
24
+ Me.LstCandidate.List = aryList
25
+ Exit Sub
26
+ End If
27
+
28
+ Me.LstCandidate.Clear
29
+ search = "*" & Me.txtSchBox.Value & "*"
30
+
31
+ Dim Itm As Variant
32
+ For Each Itm In aryList
33
+ If Itm Like search Then
34
+ Me.LstCandidate.AddItem Itm
35
+ End If
36
+ Next
37
+ End Sub
38
+
39
+ Private Sub UserForm_Initialize()
40
+ aryList = Worksheets(1).Range("A1:A10").Value 'シートのリスト
41
+ Me.LstCandidate.List = aryList
42
+ End Sub
43
+ ```

1

誤字修正

2019/12/18 04:57

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -2,6 +2,6 @@
2
2
 
3
3
  これはどのタイミングでしてますか。UserForm_Initialize ですか。
4
4
 
5
- 呈示のコードは、テキストボックスに入力した値と部分一致するデータがリストの先頭へ移動するというものですが、事前にリストボックスにリストを設定してけば、正常に動作しました。
5
+ 呈示のコードは、テキストボックスに入力した値と部分一致するデータがリストの先頭へ移動するというものですが、事前にリストボックスにリストを設定してけば、正常に動作しました。
6
6
 
7
7
  もし、最初はリストボックスは空欄で、テキストボックスに入力した値と部分一致するものをリストボックスに表示させたいということなら一からコードを書き直す必要があります。