以前コード全体のことについて質問させていただいたものです。依然解決していません。今回はその中でもFindメソッドについてです。
ーーー希望の作動ーーーーーー
UserForm3にあるComboBox1内の日付を選択→CommandBotton1をトリガに別シートのE列にある様々な日付から同様(複数)の日付の行のみを取得したい
コンボボックスの内の日付は関数を用い第N週の木曜日を表示させてます。
関数参考サイト→https://vba-labo.rs-techdev.com/archives/170
以下コードには検索用のコード、日付をコンボボックスに追加するコードを記入します。
初心者なものでどこがいけないのかがわかりません。
このコードを実行すると必ずnothingの結果になってしまいます。(星マークのところ)
単純に検索結果が一致してないことが原因だと思います。しかし何をどうすればいいかがわかりません。いろいろ試しましたが日付のシリアル値、テキスト、値等どれでもヒットしないのです。
検索先の別シートのE列にはカスタム書式yyyy/mm/ddが入っています。
ご教授のほどよろしくお願いします。
ExcelVBA
1'検索用のコード 2Private Sub CommandButton1_Click() 3 4Dim S2 As Workshhet 5 Set S2 = Worksheets("2") 6 7 Dim LastRowY As Long 8 LastRowY = S2.Cells(Rows.Count, 1).End(xlUp).Row 9 10 Dim myRange As Range 11 Dim myObj As Range 12 Dim KeyDate As Date 13 14 Set myRange = S2.Range(S2.Cells(2, 5),S2.Cells(LastRowY, 5)) 15 KeyDate = CDate(UserForm3.ComboBox1) 16 Set myObj = myRange.Find(What:=KeyDate, LookIn:=xlFormulas) 17 18 If myObj Is Nothing Or ComboBox1 = "" Then 19 **MsgBox ComboBox1 & "はいません。"** 20 Exit Sub 21 Else 22 DeBug.Print myObj 23 End If 24End Sub 25 26'コンボボックス内の日付の追加(第1週、第4週木曜日の日付を表示。カスタム関数については参考サイト参照) 27 28Private Sub UserForm _Initialize() 29With ComboBox1 30 Dim i As Long 31 Dim m As Date 32 Dim y As Date 33 m = month(Date) 34 y = year(Date) 35 36 Dim x As Date 37 Dim z As Date 38 Dim a As Date 39 x = DateSerial(y, m, Day(Date)) 40 z = getDateWeekNum(y, m, vbThrusday,1)'カスタム関数第1週木曜日 41 a = getDateWeekNum(y, m, vbThrusday,4)'カスタム関数第4週木曜日 42 43 44If CDate(x) <= CDate(z) Then 45 For i = 0 To 12 46 .AddItem getDateWeekNum(y, m + i, vbThrusday,1) 47 .AddItem getDateWeekNum(y, m + i, vbThrusday,4) 48 Next 49 50ElseIf CDate(x) > CDate(Z) And CDate(x) <= CDate(a) Then 51 For i = 0 To 12 52 .AddItem getDateWeekNum(y, m + i, vbThrusday,1) 53 .AddItem getDateWeekNum(y, m + i + 1, vbThrusday,4) 54 Next 55 56Else 57 For i = 0 To 12 58 .AddItem getDateWeekNum(y, m + i + 1, vbThrusday,1) 59 .AddItem getDateWeekNum(y, m + i + 1, vbThrusday,4) 60 Next 61End If 62End With 63End Sub
回答1件
あなたの回答
tips
プレビュー