現在までのVBA文字列| ExcelVBAで文字列値を日付に変換する

現在までのExcelVBA文字列

Vbaには、指定された文字列を日付に変換できるメソッドがあります。このメソッドは、vbaではCDATE関数と呼ばれます。これは、VBAに組み込まれている関数であり、この関数に必要な部分は、最初に文字列をに変換することです。数値を入力してから、指定された数値を日付に変換します。結果の形式は、システムの日付形式のみに依存します。

私たち全員がExcelで直面する一般的な問題の1つは「日付と時刻」であり、多くの場合、テキスト値として保存され、最初は気付かれません。しかし、その時間を使用する必要がある場合は、それらの値がテキストとして保存されていることを知り、それらの処理方法がまったくわかりません。「日付と時刻」は1つの要素に2つ組み合わされたものですが、これらの値がテキスト値として保存されると、操作するのが面倒になります。

文字列値を日付に変換する方法は?

このVBA文字列から日付までのExcelテンプレートはここからダウンロードできます–VBA文字列から日付までのExcelテンプレート

例1

VBA変数が宣言され、文字列として割り当てられると、その変数に割り当てられたものはすべて文字列としてのみ扱われます。例については、以下のコードを見てください。

コード:

 Sub String_To_Date()Dim k As String k = "10-21" MsgBox k End Sub 

上記のコード変数「k」では「文字列」データ型として定義されており、この変数には「10-21」として値を割り当てています。

では、コードを実行して、VBAのメッセージボックスに何が表示されるかを見てみましょう。

値は10-21のみでしたが、通常、これらの値は日付であり、文字列値ではありません。したがって、割り当てられたデータ型が「文字列」であっても、データ型変換関数CDATEVBAを使用して日付に変換できます。

コード:

 Sub String_To_Date()Dim k As String k = "10-21" MsgBox CDate(k)End Sub 

上記では、メッセージボックスに変数「k」の結果を表示する前に、CDATE関数を割り当てました。小さな調整が行われます。それがどれほど大きな影響を与えるか見てみましょう。

これで、結果は「文字列」値ではなく「日付」として表示されます。

例2

次に、例として以下のコードを見てください。

コード:

 Sub String_To_Date()Dim k As String k = 43599 MsgBox k End Sub 

この時点で、上記のコードは、上記で割り当てたように結果を「43599」と表示します。

ただし、CDATE関数を使用すると、日付値に変換されます。

コード:

 Sub String_To_Date()Dim k As String k = 43599 MsgBox CDate(k)End Sub 

CDATE関数を適用した後の結果は次のとおりです。

Excelは日付をシリアル番号として保存しているため、割り当てられたシリアル番号43599は、日付形式が適用される2019年5月14日の日付と同じです。

日付を正確に読み取るために、「DD-MMM-YYYY」の形式を日付に適用することもできます。

コード:

 Sub String_To_Date1()Dim k As String Dim DateValue As Date k = 43599 DateValue = CDate(k)MsgBox Format(DateValue、 "DD-MMM-YYYY")End Sub 

上記では、結果を格納するための1つの追加変数を宣言しました。この変数には、CDATE変換関数を適用しました。

次に、FORMAT関数を使用して「DD-MMM-YYYY」形式の形式を適用しました。結果は次のようになります。

これにより、時間と月の部分をはっきりと読み取ることができます。また、Excelのシステム日付形式にもよります。私のシステム日付形式は「MM-DD-YYYY」だったので、そのように表示されていましたが、フォーマットの妨げになることはありません。

例3

次に、ワークシートのセルで日付がテキスト値としてどのようにフォーマットされるかを実際に確認します。以下は、ワークシートにテキストとして保存されている日付の画像です。

A2からA12までの列Aには日付のような値がありますが、[形式]タブを見ると、「テキスト」形式が表示されています。次に、これらの値をテキストから日付に変換する必要があります。

Below is the code I have written to convert the text-formatted date values to actual dates.

Code:

 Sub String_To_Date2() Dim k As Long 'Data is in more than one cell, so need to loop through each cell 'Open For Loop For k = 2 To 12 'Data starts from 2nd row and ends at 12th row, so 2 to 12 Cells(k, 2).Value = CDate (Cells(k, 1).Value) Next k End Sub 

If you run the code it will give us the below result.

Things to Remember

  • CDATE is a data type conversion function but can be used to convert VBA string stored date to actual date values.
  • The result of the CDATE function format depends on system date format only.
  • Dates are stored as serial numbers in excel, so formatting is required to show them as dates.