Страницы: 1
RSS
Обработка формата даты посредством VBA
 
Приветствую!

Вводная часть (можно пропустить):
Я работаю планнинг менеджером в одной компании. Для планирования работ есть программа (Priavera) которая работает как База даннных. В ней есть информация, которую я хочу обработать в Excel, т.к. сама программа не выдает информации в качестве приемлемом для презентации. Поэтому, я копирую данные из сторонней программы и вставляю их как текст. И потом, я произвожу кучу операций по обработке данных, для того, чтоб приветси их в формат приемлемый для обработки. Т.к. эту операцию я произвожу часто, я хотел автоматизировать её через VBA. И на данном пути, у меня получилось почти всё, за исключением некоторых моментов. Вот об одном из них я и хочу спросить.

Вводная часть в проблему:
Есть данные, к примеру в столбце А, которые выглядят как даты, но при этом, воспринимаются как текст.
Теперь, посредством VBA я хочу произвести замену "." на ту же самую точку или знак "/" (в зависимости от региональных стандартов), чтоб эти ячейки были восприняты как ДАТА.
Если это делать в самом EXCEL через функцию автозамены "CTRL+H" то даты в ячейке буду поняти и преобразованы корректно (в соответствии с форматом принятым в европе "DD.MM,YYYY"  ;)  .
Проблема:
Но если произвести замену символа через VBA, то в этом случае, формат "восприятия" даты будет по американскому стандарту (MM.DD.YYYY).
Т.е. если смотреть по примеру, ячейка А3 была отформатирована как Ноябрь 05 2014 года, а ячейки А4 и А5 не были восприняты, т.к. нет месяцев под номером 24 и 15.
Вопрос:
Как мне в данной ситауции, в VBA сделать так, чтоб данные в ячейках с A2 по A5 цифры были прочитаны именно в европейском формате, а не в американском???

Важно, чтоб это было выполненно именно в VBA,
Заранее благодарю.
Рисунки удалены: превышение размера вложения [МОДЕРАТОР]
 
Ах да, поиском пользовался, но он так ничего не дал.
Ключевые слва при поиске использовал "Формат даты VBA"
 
вариант
Код
Sub test()
  For Each c In [a2:a5].Cells
    If c Like "##.##.####" Then
      c.NumberFormat = "DD/MM/YYYY"
      c.Value = DateSerial(Right(c.Value, 4), Mid(c.Value, 4, 2), Left(c.Value, 2))
    End If
  Next
End Sub
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
ikki, спасибо!
Я новичок в vba.
И не знаю всех возможностей и функций. но, думаю, Ваш вариант очень прост и лаконичен. Буду пробовать.
Спасибо.
 
ВОТ ЗДОРОВО!!!
Всё сработало!
Спасибо!
Я читал кучу ссылок по данному вопросу и нигде не мог найти верного решения!
Спасибо!
Вопрос закрыт!
 
ikki, спасибо, заработало  :)  
А можно ли было использовать функцию DateValue() ?
Страницы: 1
Наверх