Формат даты макроса VBA - PullRequest
2 голосов
/ 10 марта 2019

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

Counter_Red,"04/03/2019 12:54:19",3,1,43528537722.5347

Вначале мне нужно разбить данные на отдельные столбцы, прежде чем я смогу их проанализировать.Когда я использую инструмент Excel для разделения текста на столбцы, он работает нормально, и я получаю ожидаемый результат в формате day.month.year.

04.3.2019  12:54:19

Я создал макрос, чтобы выполнить разбиение для меня.

 Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
    Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
    :=Array(Array(1, 1), Array(2, 4), Array(3, 1), Array(4, 1), Array(5, 1)),   _
    TrailingMinusNumbers:=True

Но когда я использую свой макрос VBA для этого, он всегда меняет день и месяц, поэтому в результате получается формат month.day.year.

3.4.2019  12:54:19

Может кто-нибудь посоветовать мне, как это исправить, чтобы мой макрос дал мне правильный формат даты day.month.year?

1 Ответ

0 голосов
/ 10 марта 2019

J, они правы (сверху). Лично, если это маленький объем данных, я бы использовал функцию Split , чтобы поместить в массив, а затем изменить и вывести оттуда. Это правда, что функции рабочего листа всегда будут работать быстрее и потреблять меньше ресурсов, чем использование массивов (особенно динамических массивов), но, возможно:

Option Explicit

Function MakeDates()

Dim cellData As String
Dim arr_data() As String
Dim intArr As Integer

cellData = ActiveCell.Value

arr_data = Split(cellData, ",")

For intArr = 0 To UBound(arr_data) - 1
    'getting rid of double-quotes
    arr_data(intArr) = Replace(arr_data(intArr), """", "")
    'formatting date if applicable
    If IsDate(arr_data(intArr)) Then: _
    arr_data(intArr) = Format(arr_data(intArr), "dd-m-yyyy")
    'placing data on Sheet
    ActiveCell.Offset(0, intArr).Value = arr_data(intArr)
Next

End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...