Excel2007で顧客管理ソフトを作ってみよう

Step 16 あいまい検索を実行し、結果を抽出する

検索ユーザーフォームの項目欄に検索文字を入力し、「検索」ボタンをクリックすると、一覧シートから抽出し検索シートにコピーします。今回はここまでで、次回は入力フォームにこれを表示するようにします。
・「検索」ボタンがクリックされた場合
(1)顧客IDが不正でないかチェック
(2)顧客IDが入力されていれば、AutoFilterで抽出
(3)フリガナが入力されていれば、AutoFilterで抽出
(4)一覧シートの最終行を探し、抽出データの有無をチェック
(5)抽出結果があれば、検索シートにコピー



Homeへ > Excelでアプリケーションソフト2 > 顧客管理ソフト

ユーザーフォームのコード

下記のVBAコードを追加してください。

Private Sub CommandButton1_Click()
    Dim tRange As Range
    Dim lrow As Long
    Dim s1 As String
    Dim bFlag As Boolean
    
    If TextBox1 <> "" And Not IsNumeric(TextBox1) Then
        MsgBox "顧客IDには数値を入力してください。"
        TextBox1.SetFocus
        Exit Sub
    End If

    bFlag = False
    If TextBox1 <> "" Then
        Worksheets("一覧").Range("A2").AutoFilter field:=1, Criteria1:=TextBox1
        bFlag = True
    End If
    
    If TextBox2 <> "" Then
        Worksheets("一覧").Range("A2").AutoFilter field:=3, Criteria1:="*" & TextBox2 & "*"
        bFlag = True
    End If
    
    If bFlag = False Then
        MsgBox "検索内容を入力してください。"
        TextBox1.SetFocus
        Exit Sub
    End If
        
    Sheets("検索").Cells.Clear

    '最終行を捜す
    lrow = Sheets("一覧").Range("A1048576").End(xlUp).Row - 1 '
    If lrow = 1 Then
        Label2.Visible = True
        Label3.Visible = False
    Else
        Label3.Visible = True
        Label2.Visible = False
        s1 = "A1:K" & lrow + 1
        Sheets("一覧").Range(s1).Copy
        Sheets("検索").Range("A1").PasteSpecial
    End If
    Worksheets("一覧").AutoFilterMode = False
End Sub


シート画面

フリガナ欄に「イ」を入力し、フリガナにイが含まれる顧客を検索します。
フリガナ で検索

見つかると「見つかりました」と表示されます。ない場合は、「見つかりませんでした」と表示されます。
結果を表示

見つかった場合は、抽出結果を「検索」シートにコピーされます。下図では、フリガナにイが含まれる顧客が
表示されています。
検索結果一覧

Homeへ > Excelでアプリケーションソフト2 > 顧客管理ソフト

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved