プロが教えるわが家の防犯対策術!

いつもお世話になっております

下記のコードを実行すると 型が一致しませんと
でてしまいます。

間違って言ところ
わかる方おしえてくれませんでしょうか
.AutoFilter field:=6, Criteria1:=">=" & DateSerial(ListBox4, ListBox5, 1), _
Operator:=xlAnd, _
Criteria2:="<=" & DateSerial(ListBox6, ListBox7.Value + 1, 0)

field:=7 は担当
field:=6 は契約予定日
となっています。

ListBox4には 
2022
2023

ListBox5には 
4/1
5/1
6/1

ListBox6には
2022
2023

ListBox7には 
4/30
5/31
6/30
となっています。


Dim a() As String
Dim d As Long
Dim Cnt As Long

With Me.ListBox1
For d = 0 To .ListCount - 1
If .Selected(d) Then
Cnt = Cnt + 1
ReDim Preserve a(1 To Cnt)
a(Cnt) = .List(d)
End If
Next
If Cnt = 0 Then Exit Sub
End With


With Range("B1")

.AutoFilter field:=7, Criteria1:=a(), Operator:=xlFilterValues

.AutoFilter field:=6, Criteria1:=">=" & DateSerial(ListBox4, ListBox5, 1), _
Operator:=xlAnd, _
Criteria2:="<=" & DateSerial(ListBox6, ListBox7.Value + 1, 0)


End With

「Dateserialで データ抽出」の質問画像

A 回答 (2件)

>ListBox5には 4/1


がおかしいのでは。
https://docs.microsoft.com/ja-jp/office/vba/lang …
「Dateserialで データ抽出」の回答画像1
    • good
    • 0
この回答へのお礼

With ListBox5
.AddItem "4"
.AddItem "5"
.AddItem "6"
.AddItem "7"
.AddItem "8"
.AddItem "9"
.AddItem "10"
.AddItem "11"
.AddItem "12"
.AddItem "1"
.AddItem "2"
.AddItem "3"
End With
に修正してうまくいきました。
ありがとうございました。

お礼日時:2022/06/26 22:18

こんばんは



既に回答がでていますが、
 DateSerial(year, month, day)
の引数は、単純な整数のはずです。
それ以外の値を渡しているので、エラーになっているかと。

ListBoxの値を分解して引数にするか、あるいはそのままで利用したいのなら
 DateValue(ListBox4 & "/ " & ListBox5)
などとしておくとか。
    • good
    • 0
この回答へのお礼

いつもお世話になっております
ありがとうございました。

お礼日時:2022/06/26 22:20

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