Проблема: даты, отображаемые в моих файлах Excel, не являются фактическими датами, введенными в каждую ячейку. Например, я мог бы визуально увидеть 18.04.2009, но когда я щелкаю по ячейке, она показывает 18.04.2009 в 18:48:00. Это становится проблемой, когда я запускаю макрос, который я использую для преобразования моего файла xlsx в txt. Сгенерированный текстовый файл покажет 19.04.2009 18:48:00 в поле даты, а не то, что я хочу, 18.04.2017.
Текущее исправление, которое я использую, - это вставка столбцов рядом со столбцами даты, копирование столбцов даты и вставка значений в новые вставленные столбцы, а затем удаление вставленных столбцов. Это было достигнуто путем записи макроса (я нуб, если вы не можете сказать).
Это элементарное исправление на самом деле работает довольно хорошо при генерации нужного мне результата. За исключением одной проблемы: если в столбцах даты есть пробелы, он вставляется 01.01.1900. Пробелы в столбцах даты довольно часто встречаются в работе, которую я выполняю, поэтому это большая проблема.
Я пытался добавить это Если после вставки / вставки значений / удаления кода:
'Фиксировать формат даты в столбцах A и C
Columns("B").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Columns("E").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("B1").Select
ActiveCell.FormulaR1C1 = "=TEXT(RC[-1],""mm"/"dd"/"yyyy"")"
Range("E1").Select
ActiveCell.FormulaR1C1 = "=TEXT(RC[-1],""mm"/"dd"/"yyyy"")"
Range("B1").Select
Selection.AutoFill Destination:=Range("B1:B" & EndRow)
Range("E1").Select
Selection.AutoFill Destination:=Range("E1:E" & EndRow)
Range("B1:B" & EndRow).Select
Selection.Copy
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("E1:E" & EndRow).Select
Selection.Copy
Range("D1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("E").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Columns("B").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
If Range("A1:A") = "01/01/1900" Then ClearContents
Но я получаю эту ошибку «Ошибка компиляции: Sub или Function не определены», с выделенным словом Range в операторе If. Я не понимаю, почему он не распознает диапазон, поскольку он используется без проблем всего на несколько строк. Я должен делать что-то не так, но я потерян. Есть идеи?
PS - If - это всего лишь средство для достижения цели, как для устранения пробелов, но я уверен, что есть лучший способ преобразовать эти столбцы даты в текст или в нужный мне формат даты. Если у вас есть какие-либо рекомендации по более легкому способу достижения тех же результатов, я весь в ушах.
Спасибо, ребята, я действительно ценю это!