VBAを使用してMS Accessで日付を計算しています。これは、同じフォーム(例2016-01-21)に2つの日付がある場合にはうまく動作しますが、最初にこのような日付形式に文字列を変更する必要はありません:20160121 - > 2016-01-21Access VBAでCDate()を使用する互換性のないタイプ
これは私がやろうとしているものです:
Dim sYear As String, sMonth As String, sDay As String, sDate As String
sYear = Left("20160121", 4)
sMonth = Mid("20160121", 5, 2)
sDay = Mid("20160121", 7, 2)
sDate = sYear & "-" & sMonth & "-" & sDay
MsgBox CDate(sDate)
これはエラー13、互換性のない型を返します。
これはしかし作品:
MsgBox CDate("2016-01-21")
はなぜ私の方法では動作しませんか?
上記のコードは動作します。私の推測では、 "20160121"は実際には固定値ではなく、Nullを含むことができるデータベースフィールドですか?そうであれば、[Nz() '関数](https://msdn.microsoft.com/en-us/library/office/aa172237%28v=office.11%29.aspx?f=255&MSPPError=- 2147217396)。 – Tomalak
あなたは正しいですが、それは動作しますが... "20160121"の代わりに、変数varをテキストボックスから取得します。私は左()とcDate()の作業でユーザvarを使うことができますが、Mid()で使用するときはそうではありません...それはもっと明確になりますか? – PoorCadaver
いいえ、残念ながら、実際はありません。コード内にブレークポイントを設定し、行単位でステップ実行し、エラーが発生した正確な行とその時点のすべての変数値を書き留めます。これは簡単な見落としであり、実際の問題ではありません。 – Tomalak