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

回答編集履歴

7

コード追記

2021/03/16 06:56

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -133,4 +133,17 @@
133
133
  Next
134
134
  End With
135
135
  End Sub
136
- ```
136
+ ```
137
+
138
+ If部分は下記の方がご希望にそうかも。
139
+
140
+ ```vba
141
+ If (Me.txtフリガナ = "" Or .Cells(wRow, 2) Like "*" & Me.txtフリガナ & "*") _
142
+ And (Me.txt電話番号 = "" Or .Cells(wRow, 6) Like "*" & Me.txt電話番号 & "*") _
143
+ And (Me.txt住所 = "" Or .Cells(wRow, 5) Like "*" & Me.txt住所 & "*") _
144
+ And ((Me.CheckBox1.Value = False And Me.CheckBox2.Value = False And Me.CheckBox3.Value = False) _
145
+ Or (Me.CheckBox1.Value And .Cells(wRow, 10) = Me.CheckBox1.Caption) _
146
+ Or (Me.CheckBox2.Value And .Cells(wRow, 10) = Me.CheckBox2.Caption) _
147
+ Or (Me.CheckBox3.Value And .Cells(wRow, 10) = Me.CheckBox3.Caption)) Then
148
+ ```
149
+ 2つチェックを入れたら、両方表示させる。

6

コード追記

2021/03/16 06:56

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -67,4 +67,70 @@
67
67
  .Cells(wRow, 2)
68
68
  .Cells(wRow, 6)
69
69
  .Cells(wRow, 5)
70
- ですね。(コード修正済み)
70
+ ですね。(コード修正済み)
71
+
72
+
73
+ ---
74
+
75
+ チェックボックスで種類を絞り込むのも追加したコード。
76
+ チェックボックスはチェックが入ったものを条件に絞り込む。
77
+ 複数チェックを入れると抽出されないので、チェックボックスよりオプションボタンの方がUIとしては適切。オプションボタンは一つしか選択できないので。
78
+
79
+ ```vba
80
+ Private Sub CheckBox1_Click()
81
+ Call SetListBox
82
+ End Sub
83
+
84
+ Private Sub CheckBox2_Click()
85
+ Call SetListBox
86
+ End Sub
87
+
88
+ Private Sub CheckBox3_Click()
89
+ Call SetListBox
90
+ End Sub
91
+
92
+ Private Sub txt住所_Change()
93
+ Call SetListBox
94
+ End Sub
95
+
96
+ Private Sub txtふりがな_Change()
97
+ Call SetListBox
98
+ End Sub
99
+
100
+ Private Sub txt電話番号_Change()
101
+ Call SetListBox
102
+ End Sub
103
+
104
+ Private Sub lst顧客リスト_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
105
+
106
+ rtnNo = Me.lst顧客リスト.Text
107
+ Debug.Print rtnNo
108
+ Unload Me '← フォームを閉じる
109
+ End Sub
110
+
111
+ Private Sub SetListBox()
112
+ Dim wRow As Long
113
+ Dim wLstRow As Long
114
+
115
+ Me.lst顧客リスト.Clear
116
+ wLstRow = 0
117
+
118
+ With Worksheets("顧客情報")
119
+ For wRow = 2 To .Range("A1").CurrentRegion.Rows.Count
120
+ If (Me.txtフリガナ = "" Or .Cells(wRow, 2) Like "*" & Me.txtフリガナ & "*") _
121
+ And (Me.txt電話番号 = "" Or .Cells(wRow, 6) Like "*" & Me.txt電話番号 & "*") _
122
+ And (Me.txt住所 = "" Or .Cells(wRow, 5) Like "*" & Me.txt住所 & "*") _
123
+ And (Me.CheckBox1.Value = False Or .Cells(wRow, 10) = Me.CheckBox1.Caption) _
124
+ And (Me.CheckBox2.Value = False Or .Cells(wRow, 10) = Me.CheckBox2.Caption) _
125
+ And (Me.CheckBox3.Value = False Or .Cells(wRow, 10) = Me.CheckBox3.Caption) Then
126
+
127
+ Me.lst顧客リスト.AddItem ""
128
+ Me.lst顧客リスト.List(wLstRow, 0) = wRow
129
+ Me.lst顧客リスト.List(wLstRow, 1) = .Cells(wRow, 2)
130
+ wLstRow = wLstRow + 1
131
+
132
+ End If
133
+ Next
134
+ End With
135
+ End Sub
136
+ ```

5

説明の改善

2021/03/16 06:31

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -44,7 +44,7 @@
44
44
  With Worksheets("顧客情報")
45
45
  For wRow = 2 To .Range("A1").CurrentRegion.Rows.Count
46
46
  If (Me.txtフリガナ = "" Or .Cells(wRow, 2) Like "*" & Me.txtフリガナ & "*") _
47
- And (Me.txt電話番号 = "" Or .Cells(wRow, 4) Like "*" & Me.txt電話番号 & "*") _
47
+ And (Me.txt電話番号 = "" Or .Cells(wRow, 6) Like "*" & Me.txt電話番号 & "*") _
48
48
  And (Me.txt住所 = "" Or .Cells(wRow, 5) Like "*" & Me.txt住所 & "*") Then
49
49
 
50
50
  Me.lst顧客リスト.AddItem ""
@@ -63,8 +63,8 @@
63
63
  の列の部分はそれぞれ対応するデータの入っている列にしてください。
64
64
 
65
65
  ---
66
- ※追加されたシートの画像をみると、ふりがながB列、電話番号がD列、住所がE列なので、
66
+ ※追加されたシートの画像をみると、ふりがながB列、電話番号がF列、住所がE列なので、
67
67
  .Cells(wRow, 2)
68
- .Cells(wRow, 4)
68
+ .Cells(wRow, 6)
69
69
  .Cells(wRow, 5)
70
70
  ですね。(コード修正済み)

4

書式改善

2021/03/16 06:06

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -61,6 +61,7 @@
61
61
  .Cells(wRow, 3)
62
62
  .Cells(wRow, 4)
63
63
  の列の部分はそれぞれ対応するデータの入っている列にしてください。
64
+
64
65
  ---
65
66
  ※追加されたシートの画像をみると、ふりがながB列、電話番号がD列、住所がE列なので、
66
67
  .Cells(wRow, 2)

3

説明追記

2021/03/16 06:04

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -44,8 +44,8 @@
44
44
  With Worksheets("顧客情報")
45
45
  For wRow = 2 To .Range("A1").CurrentRegion.Rows.Count
46
46
  If (Me.txtフリガナ = "" Or .Cells(wRow, 2) Like "*" & Me.txtフリガナ & "*") _
47
- And (Me.txt電話番号 = "" Or .Cells(wRow, 3) Like "*" & Me.txt電話番号 & "*") _
47
+ And (Me.txt電話番号 = "" Or .Cells(wRow, 4) Like "*" & Me.txt電話番号 & "*") _
48
- And (Me.txt住所 = "" Or .Cells(wRow, 4) Like "*" & Me.txt住所 & "*") Then
48
+ And (Me.txt住所 = "" Or .Cells(wRow, 5) Like "*" & Me.txt住所 & "*") Then
49
49
 
50
50
  Me.lst顧客リスト.AddItem ""
51
51
  Me.lst顧客リスト.List(wLstRow, 0) = wRow
@@ -60,4 +60,10 @@
60
60
  .Cells(wRow, 2)
61
61
  .Cells(wRow, 3)
62
62
  .Cells(wRow, 4)
63
- の列の部分はそれぞれ対応するデータの入っている列にしてください。
63
+ の列の部分はそれぞれ対応するデータの入っている列にしてください。
64
+ ---
65
+ ※追加されたシートの画像をみると、ふりがながB列、電話番号がD列、住所がE列なので、
66
+ .Cells(wRow, 2)
67
+ .Cells(wRow, 4)
68
+ .Cells(wRow, 5)
69
+ ですね。(コード修正済み)

2

コード修正

2021/03/16 06:03

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -56,4 +56,8 @@
56
56
  Next
57
57
  End With
58
58
  End Sub
59
- ```
59
+ ```
60
+ .Cells(wRow, 2)
61
+ .Cells(wRow, 3)
62
+ .Cells(wRow, 4)
63
+ の列の部分はそれぞれ対応するデータの入っている列にしてください。

1

コード修正

2021/03/16 05:54

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -44,8 +44,8 @@
44
44
  With Worksheets("顧客情報")
45
45
  For wRow = 2 To .Range("A1").CurrentRegion.Rows.Count
46
46
  If (Me.txtフリガナ = "" Or .Cells(wRow, 2) Like "*" & Me.txtフリガナ & "*") _
47
- And (Me.txt電話番号 = "" Or .Cells(wRow, 2) Like "*" & Me.txt電話番号 & "*") _
47
+ And (Me.txt電話番号 = "" Or .Cells(wRow, 3) Like "*" & Me.txt電話番号 & "*") _
48
- And (Me.txt住所 = "" Or .Cells(wRow, 2) Like "*" & Me.txt住所 & "*") Then
48
+ And (Me.txt住所 = "" Or .Cells(wRow, 4) Like "*" & Me.txt住所 & "*") Then
49
49
 
50
50
  Me.lst顧客リスト.AddItem ""
51
51
  Me.lst顧客リスト.List(wLstRow, 0) = wRow