2018年3月29日VBAこのページでは文字列から日付(Date型)への変換について紹介しています。それとは逆の、日付から文字列への変換は「VBAで日付(Date型)から文字列に変換する」をご参照ください。文字列から日付(Date型)に変換する日付形式の文字列をDate型の日付に変換する方法を紹介します。日付形式の文字列にはyyyy/mm/dd形式やyyyymmdd形式など表現方法がいくつかありますが、そのままDate型に変換できるものとそうでないものがあります。それらについて以下に整理します。yyyy/mm/dd形式はそのままCDate関数で変換するスラッシュ区切りの年月日の文字列はそのままCDate関数でDate型に変換できます。Subyyyymmdd形式はyyyy/mm/ddにしてからCDate関数で変換する8文字の数字で日付としてみなされる形になっている場合は、そのままではDate型には変換できません。そのため、文字列の年・月・日の各部分を分けてスラッシュ等で区切り、yyyy/mm/dd形式の文字列にした上でCDate関数で変換する必要があります。以下の例ではFormat関数でスラッシュ区切りに変換してCDate関数で変換する方法と、Mid関数で年・月・日のそれぞれを切り出してスラッシュ文字を連結してCDate関数で変換する方法の2つ挙げています。Format関数の####/##/##の#は数字1文字を表します。Format関数とMid関数のどちらの書き方でも構いません。SubIsDate関数の拡張関数Date型に変換できるかどうかを判定するためのIsDate関数があります。yyyy/mm/dd形式は変換できるとみなされますが、yyyymmddは変換できないと判定されます。”0002017/08/31′′という文字列の場合は変換できるとみなされ、「えー!?」と思わされる挙動をします。個人的にはちょっと不便だと感じます。これらを解消した関数を「8桁日付やスラッシュ編集日付用のIsDate関数」にて紹介しています。Excel作業をVBAで効率化シェアお問合わせTOPへ。