教えて!gooグレードポイントがdポイントに!

申し訳ありません。超初心者です。
ユーザーフォーム内にTextBoxを2つ作り、指定日を入れます。(検索ボックス5、検索ボックス6を作ったと過程)
検索ボタンを押すと指定期間のデータをリストボックスに表示させたいのですがどのように書けばよいかご教示ください。
下記コードは途中まででギブアップ状態です。



Private Sub 検索_Click()


'検索を実行します。部分一致検索。
Dim lastrow As Long
Dim myData, myData2()
Dim i As Long, cn As Long


'検索対象がない場合の警告
If 検索ボックス.Text & 検索ボックス2.Text & 検索ボックス3.Text & 検索ボックス4.Text = "" Then
MsgBox "検索対象を入力してください。"
Exit Sub
End If

'検索するデータを配列 myData に格納。
With Worksheets("名簿")


lastrow = .Cells(Rows.Count, 1).End(xlUp).Row
myData = .Range(.Cells(1, 1), .Cells(lastrow, 6)).Value
End With

'配列 myData の中で検索で一致したデータを配列 myData2 に格納しています。
ReDim myData2(1 To lastrow, 1 To 6)
For i = LBound(myData) To UBound(myData)
If myData(i, 1) Like "*" & 検索ボックス.Value & "*" Then
If myData(i, 2) Like "*" & 検索ボックス2.Value & "*" Then
If myData(i, 3) Like "*" & 検索ボックス3.Value & "*" Then
If myData(i, 4) Like "*" & 検索ボックス4.Value & "*" Then
cn = cn + 1
myData2(cn, 1) = myData(i, 1)
myData2(cn, 2) = myData(i, 2)
myData2(cn, 3) = myData(i, 3)
myData2(cn, 4) = myData(i, 4)




End If
End If
End If
End If
Next i


'検索で一致したデータをリストボックスに表示。
With ListBox1
.ColumnCount = 6
.ColumnWidths = "70;50;200;80;190;100"
.List = myData2

「VBAで指定期間の範囲を抽出し、リストボ」の質問画像
教えて!goo グレード

A 回答 (2件)

こんばんは



>指定日を入れます。(検索ボックス5、検索ボックス6を作ったと過程)
ご提示のコードには、検索ボックス5、6って見当たらないけれど??
比較する対象が、データのどこにあるのかも不明ですし・・・
想像するところ、どこかに日にちのデータがあって、それが「指定期間内のものだけをピックアップ」したいってなことなのかも知れないけれど。

日にちの比較はシリアル値で行うのが簡単です。
一方で、テキストボックスの入力値は文字列で取得されますので・・
・日付であることのチェックを行うのなら、IsDate 関数を利用すれば良いでしょう。
・文字列をシリアル値に変換するには、DateValue 関数を利用すれば良いでしょう。
・データの値が文字列なのかシリアル値なのか不明ですが、扱いは同様です。

以上の準備処理を事前にしておいて、
データのフィルターに
 開始日 <= 日付データ <= 終了日
を追加すればよいものと思われます。

※ 想像に基づく回答なので、当たるも八卦ですけれど・・・
    • good
    • 2
この回答へのお礼

ありがとうございます。参考にさせていただきます。

お礼日時:2021/12/21 17:50

どこまでできて、どこが問題なのか。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング