Строка VBA на дату | Преобразование строковых значений в дату в Excel VBA

Строка Excel VBA на дату

В Vba есть метод, с помощью которого мы можем преобразовать заданную строку в дату, и этот метод известен как функция CDATE в vba, это встроенная функция в VBA, и части, необходимые для этой функции, должны сначала преобразовать строку в число, а затем мы преобразуем данное число в дату. Формат результата зависит только от формата системной даты.

Одна из распространенных проблем, с которыми мы все сталкиваемся при работе с Excel, - это «Дата и время», которые часто сохраняются в виде текстовых значений и изначально остаются незамеченными. Но когда им потребуется использовать это время, мы узнаем, что эти значения хранятся в виде текста, и мы вообще не знаем, что с ними делать. «Дата и время» - это две объединенные вещи в одном элементе, но после того, как эти значения сохраняются в виде текстовых значений, работать с ними становится сложно.

Как преобразовать строковые значения в дату?

Вы можете скачать этот шаблон VBA String to Date Excel здесь - VBA String to Date Excel Template

Пример # 1

После объявления переменной VBA и присвоения ей значения String все, что присвоено этой переменной, будет рассматриваться только как строка. Для примера посмотрите приведенный ниже код.

Код:

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

В приведенном выше коде переменная «k» определена как тип данных «String», и для этой переменной мы присвоили значение «10-21».

Хорошо, давайте запустим код и посмотрим, что мы получим в окне сообщения в VBA.

Мы получили только значение 10-21, но обычно эти значения представляют собой дату, а не строковые значения. Таким образом, даже несмотря на то, что назначенным типом данных является «Строка», мы все равно можем преобразовать данные на текущий момент, используя функцию преобразования типа данных CDATE VBA.

Код:

 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 равен дате 14.05.2019, когда применяется формат даты.

Мы также можем применить к дате формат «ДД-МММ-ГГГГ» для точного чтения даты.

Код:

 Sub String_To_Date1 () Dim k As String Dim DateValue As Date k = 43599 DateValue = CDate (k) Формат MsgBox (DateValue, «DD-MMM-YYYY») End Sub 

Выше я объявил одну дополнительную переменную для хранения результата. Для этой переменной я применил функцию преобразования CDATE.

Затем я использовал функцию FORMAT для применения формата «ДД-МММ-ГГГГ», и результат будет таким, как показано ниже.

Благодаря этому мы можем четко прочитать часть дня и месяц. Это также зависит от формата вашей системной даты в Excel, поскольку мой формат системной даты был «ММ-ДД-ГГГГ», он отображался таким образом, но это не должно быть препятствием для форматирования.

Пример # 3

Теперь посмотрим, как даты форматируются как текстовые значения в ячейках листа. Ниже представлены даты, хранящиеся в виде текста на листе.

В столбце A от A2 до A12 у нас есть значения для поиска по дате, но когда мы смотрим на вкладку формата, он показывает формат «Текст». Теперь нам нужно преобразовать эти значения из текста в дату.

Ниже приведен код, который я написал для преобразования значений даты в текстовом формате в фактические даты.

Код:

 Sub String_To_Date2 () Dim k As Long 'Данные находятся в более чем одной ячейке, поэтому необходимо пройти через каждую ячейку' Open For Loop For k = 2 to 12 'Данные начинаются со 2-й строки и заканчиваются на 12-й строке, поэтому от 2 до 12 Cells (k, 2) .Value = CDate (Cells (k, 1) .Value) Next k End Sub 

Если вы запустите код, он даст нам результат ниже.

То, что нужно запомнить

  • CDATE - это функция преобразования типа данных, но ее можно использовать для преобразования сохраненной даты строки VBA в фактические значения даты.
  • Результат формата функции CDATE зависит только от формата системной даты.
  • Даты хранятся в Excel как серийные номера, поэтому для их отображения в виде дат требуется форматирование.