Осложнения, изменяющие строку Excel к значению даты в VBA - американские и английские даты - PullRequest
0 голосов
/ 19 ноября 2018

В настоящее время я пытаюсь написать макрос для открытия набора отчетов в папке и создания сводных отчетов по всем отчетам. Частично это включает выполнение WorksheetFunction.SumIfs с использованием набора дат. Даты в столбце M используемого мной отчета .csv хранятся в виде текста, поэтому я считаю, что сначала мне нужно их преобразовать. Тем не менее, когда я пытаюсь преобразовать даты в соответствии с приведенным ниже:

Dim MyBook As ActiveWorkbook
Dim Cel As Range
For Each Cel In MyBook.Sheets(1).UsedRange.Columns("M").Cells
     If Cel.Row <> 1 Then 'this ensures it does not try and convert the header
          Cel.Value = DateValue(Cel.Value)
     End If
Next

Фактически он преобразует одну из дат (12/11/2018, т.е. 12 ноября) в формат США (11/12/2018, т.е. 11 декабря). Это происходит только в нескольких случаях. Есть ли способ, которым кто-нибудь знает об этом, который я могу использовать, чтобы остановить это? Большое спасибо заранее.

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

CDate не работал, потому что дата уже была американизирована - однако, открыв файл csv с помощью Local =: True, я смог получить дату в правильном формате. Форматы / значения даты в Excel VBA изменяются при программном открытии файла

Спасибо за вашу помощь

0 голосов
/ 19 ноября 2018

вместо Cel.Value = DateValue(Cel.Value)

попробуй

Cel.Value = CDate(Cel.Value)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...