DateSerial
を使用するVBAコードが少しありますが、疑わしい結果が出力されていません。なぜ私は結果をまったく期待していなかったので、私は少し理由を説明したいと思っていました。DateSerialが期待した日付を出力しない
私のコードは次のようになります。
Set rngTestDate = ThisWorkbook.Worksheets("Sheet11").Range("A:A").Find(DateSerial(Year(TheDate1), 1, 1))
、出力は次のようになります。
?rngTestDate
11/1/2016
?Year(TheDate1)
2016
?DateSerial(Year(TheDate1),1,1)
1/1/2016
イミディエイトウィンドウを使用して、Sheet11
はそれで2016年1月1日を持っていません。しかし、それは2016年1月4日と2016年11月1日を持っています。.Find
メソッドは、2011年1月1日を探し、それが見つからなければNothing
に設定されることを完全に期待していました。もしそうでなければ、少なくとも次の利用可能な日付を見つけてください。
.Find
の方法は、上記のDateSerial
の値が与えられている2016年1月4日より2016年11月1日に見つかるのはなぜですか?または、より良い質問があると思います:1/1/2016が見つからない場合、なぜそれがNothing
に設定されていませんか?
あなたは '1/1/2016'を探していて、' 11/1/2016'はそれを含んでいます(2文字目から)。 –
Oh wow ...だから私は 'DateSerial'を使っていますが、日付が完全に一致しているかどうかにかかわらず、" 1/1/2016 "の値を含む最も近いものを探していますか? '.Find'は' DateSerial'の出力を文字列のように扱います。 – SalvadorVayshun