Возникла такая проблема: на моём компьютере не работает макрос, т.к. CDate обрабатывает дату некорректно. На двух других комп-ах моих коллег, макрос работает исправно. Возможно дело в настройках компьютера или программы? Как это исправить в макросе
Т.е. макрос берёт с листа Екселя дату в формате ДД.ММ.ГГГГ и сравнивает его с форматом ММ.ДД.ГГГГ (что делает CDate). На другом компьютере CDate берёт дату в формате ДД.ММ.ГГГГ Грубо говоря, в базе данных, я меняю данные через поиск совпадения условия по дате, но у меня они не совпадают, из-за чего создается новая некорректная запись.
Файл приложить не могу. Макрос большой и вынести его нет возможности. Возможно кто-то сталкивался уже с такой проблемой?
[p.s.]Может как-то ещё можно строку преобразовать в дату (строка ММ.ДД.ГГГГ в дату ДД.ММ.ГГГГ)?[/p.s.]
Добрый вечер!
Возникла такая проблема: на моём компьютере не работает макрос, т.к. CDate обрабатывает дату некорректно. На двух других комп-ах моих коллег, макрос работает исправно. Возможно дело в настройках компьютера или программы? Как это исправить в макросе
Т.е. макрос берёт с листа Екселя дату в формате ДД.ММ.ГГГГ и сравнивает его с форматом ММ.ДД.ГГГГ (что делает CDate). На другом компьютере CDate берёт дату в формате ДД.ММ.ГГГГ Грубо говоря, в базе данных, я меняю данные через поиск совпадения условия по дате, но у меня они не совпадают, из-за чего создается новая некорректная запись.
Файл приложить не могу. Макрос большой и вынести его нет возможности. Возможно кто-то сталкивался уже с такой проблемой?
[p.s.]Может как-то ещё можно строку преобразовать в дату (строка ММ.ДД.ГГГГ в дату ДД.ММ.ГГГГ)?[/p.s.]Naya
Добрый вечер. Дата есть дата, это по сути число, возможно дробное, если с часами-минутами. Если сравнивать две даты - двусмысленностей быть не должно. Ну а если сравнивать с строкой - приводите дату к тому же виду что и строка, и сравнивайте как две строки. Или строку приводите в дату, и сравнивайте даты (что кажется и происходит). Как Вы сравниваете эти даты - отсюда не видно. Без примера проблемы в файле трудно что-то конкретное советовать.
Добрый вечер. Дата есть дата, это по сути число, возможно дробное, если с часами-минутами. Если сравнивать две даты - двусмысленностей быть не должно. Ну а если сравнивать с строкой - приводите дату к тому же виду что и строка, и сравнивайте как две строки. Или строку приводите в дату, и сравнивайте даты (что кажется и происходит). Как Вы сравниваете эти даты - отсюда не видно. Без примера проблемы в файле трудно что-то конкретное советовать.Hugo
Возможно, у Вас дата записана текстом. Предположим, что она записана так - 01.01.2017. Тогда есть варианты - 1. На компе русский языковой настрой - тогда CDate возьмет ее как дату 2. На компе языковой настрой вероятного противника - тогда CDate не обязательно возьмет ее как дату
Возможно, у Вас дата записана текстом. Предположим, что она записана так - 01.01.2017. Тогда есть варианты - 1. На компе русский языковой настрой - тогда CDate возьмет ее как дату 2. На компе языковой настрой вероятного противника - тогда CDate не обязательно возьмет ее как дату_Boroda_
Naya, Скажу больше, дело даже не в компьютере, а в настройках пользователя и (Немного подправлю _Boroda_,) Не языковых, а именно региональных) Собственно, если у вас VBА, то скорректировать его и проверив что там у пользователя в ветке реестра HKEY_CURRENT_USER\Control Panel\International, в вашем случае нас интересует значение sShortDate и исходя из этого провести конвертацию, не такая большая проблема. Вариант 2, не смотрим в реестр, а просто сравниваем эталонную дату с тем что после конвертации вышло и в зависимости от результата принимаем решение. Вариант 3 . Смотрим что у коллег в настройках форматы даты в региональных установках и делаем их аналогичными у себя.
Naya, Скажу больше, дело даже не в компьютере, а в настройках пользователя и (Немного подправлю _Boroda_,) Не языковых, а именно региональных) Собственно, если у вас VBА, то скорректировать его и проверив что там у пользователя в ветке реестра HKEY_CURRENT_USER\Control Panel\International, в вашем случае нас интересует значение sShortDate и исходя из этого провести конвертацию, не такая большая проблема. Вариант 2, не смотрим в реестр, а просто сравниваем эталонную дату с тем что после конвертации вышло и в зависимости от результата принимаем решение. Вариант 3 . Смотрим что у коллег в настройках форматы даты в региональных установках и делаем их аналогичными у себя.bmv98rus
Замечательный Временно просто медведь , процентов на 20.
Может как-то ещё можно строку преобразовать в дату (строка ММ.ДД.ГГГГ в дату ДД.ММ.ГГГГ)?
Функция CDate чрезмерно интеллектуальна и от этого коварна - она пытается по максимуму превратить компоненты предоставленной строки в корректную дату, что иногда приводит к не совсем ожидаемым результатам: [vba]
Может как-то ещё можно строку преобразовать в дату (строка ММ.ДД.ГГГГ в дату ДД.ММ.ГГГГ)?
Функция CDate чрезмерно интеллектуальна и от этого коварна - она пытается по максимуму превратить компоненты предоставленной строки в корректную дату, что иногда приводит к не совсем ожидаемым результатам: [vba]