次は「氏名オプションボタン」をクリックしたときの処理だ(リスト3)。
Private Sub 氏名オプションボタン_Click() 判定 = 1 検索住所テキストボックス.Text = "" 検索電話番号テキストボックス.Text = "" 一覧リストボックス.Clear 氏名ボタン.Enabled = True 住所ボタン.Enabled = False 電話番号ボタン.Enabled = False Dim i As Long lastRow = Worksheets("個人情報データ").Cells(Rows.Count, 2).End(xlUp).Row + 1 If lastRow <= 3 Then MsgBox "データがありません。" Exit Sub End If For i = 3 To lastRow 一覧リストボックス.AddItem Cells(i, 2) Next 件数ラベル.Caption = 一覧リストボックス.ListCount - 1 & "件" End Sub
どの「実行」ボタンをクリックしたかを判定するために、変数「判定」に1を代入しておく(2行目)。各検索用の入力ボックスを空にし、リストボックス内もクリアしておく(3〜5行目)。「氏名ボタン」の「実行」ボタンの使用を可能にする(6行目)。「住所ボタン」と「電話番号ボタン」の「実行」ボタンは使用を不可としておく(7〜8行目)。
「個人情報データ」シート2行目以降の行番号を変数「lastRow」に格納し(10行目)、シート3行目より小さかった場合、つまり項目名だけでデータがなかった場合は警告メッセ―ジを表示して処理を抜ける(11〜14行目)。
シート3行目から取得された行番号(lastRow)の分だけFor〜Next文でループ処理(繰り返し)を行い、「一覧リストボックス」にシート2列目の「氏名」の値を追加する。「一覧リストボックス」に「氏名の一覧が表示される(16〜18行目)。
件数ラベルのCaptionに「一覧リストボックス」内のデータ件数を表示する(19行目)。ListCountから-1としているのは「一覧リストボックス」の末尾に空白のデータが追加されるためだ(図7)。
次は「住所オプションボタンをクリックしたときの処理だ(リスト4)。リスト3の「氏名オプションボタン」をクリックしたときとほとんど同じコードであるため、異なる部分のみ掲載する。
Private Sub 住所オプションボタン_Click() 判定 = 2 〜リスト3と同じ〜 氏名ボタン.Enabled = False 住所ボタン.Enabled = True 電話番号ボタン.Enabled = False 〜リスト3と同じ〜 End Sub
どの「実行」ボタンをクリックしたかを判定するために、変数「判定」に2を格納する。「住所ボタン」の「実行」ボタンの使用を可能にする。他の「実行」ボタンの使用は不可となる。
次は「電話オプションボタン」をクリックしたときの処理だ(リスト5)。これもリスト3の「氏名オプションボタン」をクリックしたときとほとんど同じコードであるため、異なる部分のみ掲載する。
Private Sub 電話オプションボタン_Click() 判定 = 3 〜リスト3と同じ〜 氏名ボタン.Enabled = False 住所ボタン.Enabled = False 電話番号ボタン.Enabled = True 〜リスト3と同じ〜 End Sub
どの「実行」ボタンをクリックしたかを判定するために、変数「判定」に3を格納する。「電話番号ボタン」の「実行」ボタンの使用を可能にする。他の「実行」ボタンの使用は不可となる。
次は、「氏名ボタン」の「実行」ボタンをクリックしたときの処理だ(リスト6)。
Private Sub 氏名ボタン_Click() Call 検索実行(検索氏名テキストボックス.Text) End Sub
引数に「検索氏名テキストボックス」の値を指定して、「検索実行」プロシージャを実行する。
次は、「住所ボタン」の「実行」ボタンをクリックしたときの処理だ(リスト7)。
Private Sub 住所ボタン_Click() Call 検索実行(検索住所テキストボックス.Text) End Sub
引数に「検索住所テキストボックス」の値を指定して、「検索実行」プロシージャを実行する。
次は、「電話番号ボタン」の「実行」ボタンをクリックしたときの処理だ(リスト8)。
Private Sub 電話番号ボタン_Click() Call 検索実行(検索電話番号テキストボックス.Text) End Sub
引数に「検索電話番号テキストボックス」の値を指定して、「検索実行」プロシージャを実行する。
Copyright © ITmedia, Inc. All Rights Reserved.