Автоматическое изменение даты в формате ГГГГММДД с помощью Worksheet_Change - PullRequest
0 голосов
/ 14 марта 2019

Я делаю защищенный от ошибок рабочий лист для сотрудников в моем регионе.Наша система должна быть представлена ​​через лист Excel.Наряду с другими проверками, которые я уже добавил, мне нужно преобразовать даты рождения в формат YYYYMMDD в виде строки / числа, потому что добавление их в Excel с помощью пользовательских форматов приводит к ошибке в системе при загрузке (я думаю, она по-прежнему считывает датыкак ДД / ММ / ГГГГ).

Поэтому я пытаюсь использовать Worksheet_Change(), поэтому, когда пользователь вводит любую дату как DD/MM/YYYY, она автоматически преобразуется в требуемый результат.

If Not Intersect(Target, Columns("G")) Is Nothing Then

    On Error Resume Next

    fecnacadd = Target.Address
    fecnac = Target.Value

    fecnacadd = Format(fecnac, "yyyymmdd")

    Columns("G").NumberFormat = "General"

End If

Этот код странным образом работает при отладке (показывает «ГГГГММДД» правильно), но при запуске его как есть, получает макрос в цикле (?) На 10 секунд и удаляет содержимое в ячейке.

Любые подсказки в моем коде приветствуются.

1 Ответ

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

Решено, и это доказательство формата даты (не имеет значения порядок ДД или ММ). Также добавлены предложения в комментариях. Спасибо!

If Not Intersect(Target, Columns("G")) Is Nothing Then
    Application.EnableEvents = False
    On Error Resume Next

    fecnacadd = Target.Address
    fecnac = Format(Target.Value, "YYYYMMDD")

    Target.Value = fecnac

    Columns("G").NumberFormat = "General"

    Application.EnableEvents = True
End If
...