| 
    
     |  | おはようございます。 
 前回、私が投稿した
 
 www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=46362;id=excel
 
 これに文字列フィルタを追加した別解です
 (私は、普段は、sql派?なんですが、レコードセットのFilterを使ってみました。
 これも簡単で良いですねえ!!)
 
 
 userform1更にテキストボックス(Textbox3)を追加してください。
 
 sample.mdbのtblsampというテーブルの文字型フィールドである
 
 dbstrの抽出条件入力用です。
 
 
 Userform1のCommandbutton2のクリックイベントプロシジャーだけ
 以下のように変更します。
 (他のコードは前回と同じですよ!!要らないわけではありませんから・・)
 
 
 '===============================================================
 Private Sub CommandButton2_Click()
 Dim dbpath As String
 Dim myRS As Object
 dbpath = ThisWorkbook.Path & "\" & flnm
 Set myRS = CreateObject("adodb.recordset")
 If open_cat(dbpath) = 0 Then
 If exe_cmd(myRS, qry_samp, Array(TextBox1.text, TextBox2.text)) = 0 Then
 'パラメータクエリの実行
 With Worksheets("sheet1")
 .Range("f:h").ClearContents
 .Range("f1:h1").Value = Array("dbid", "dbdate", "dbstr")
 '***********************************************************************
 '追加コード
 If TextBox3.text <> "" Then
 myRS.Filter = "dbstr like '*" & TextBox3.text & "*'"
 End If
 '***********************************************************************
 .Range("f2").CopyFromRecordset myRS
 .Range("g:g").NumberFormatLocal = "yyyy/m/d"
 End With
 myRS.Close
 Else
 MsgBox "error"
 End If
 Call close_cat
 Else
 MsgBox "接続失敗"
 End If
 Set myRS = Nothing
 End Sub
 
 
 これで前回と同様の操作(コマンドボタン1をクリック)でデータベースサンプル
 を作成した後、
 
 Textbox1とTextbox2に日付範囲をYYYY/MM/DD形式で入力
 
 Textbox3にはフィールドdbstr抽出条件を入力してください。
 
 例
 Textbox1 2007/1/2
 textbox2 2007/1/10
 textbox3 B
 
 と入力し、コマンドボタン2をクリックしてください。
 
 抽出結果がF列から、
 
 dbid  dbdate   dbstr
 2   2007/1/3   BBB
 
 のように表示されます。
 
 
 上記のサンプルで試された後、実際のDBでも同じ要領で試してみては?
 
 |  |