Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

17 Май 2022, 04:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1 2 »   Вниз
  Печать  
Автор Тема: Интересные задачи  (Прочитано 3888 раз)
0 Пользователей и 1 Гость смотрят эту тему.
sokol92
Опытный пользователь
***
Offline Offline

Пол: Мужской
Сообщений: 900


WWW
« Ответ #60538: 9 Декабрь 2021, 14:24 »

Итак, решение.
1. Calc

Ячейка будет содержать текст следующего вида: 09.12.2021 13:46:51
Объяснение. Метод setFormula имеет параметр типа String. Соответственно, Basic преобразует значение, полученное от функции Now, в текст. Преобразование производится, как мы уже говорили, с учетом локализации. В свою очередь, Calc полученный текст присваивает без дополнительного анализа, поскольку ячейка имеет текстовый формат.

2. Excel

Ячейка будет содержать текст следующего вида: 12/9/2021  1:46:51 PM
Ответ является неожиданным даже для некоторых специалистов по Excel.
Объяснение. Свойство Range.Formula имеет тип Variant. Поэтому VBA передает для присвоения свойству значение типа Variant/Date, поскольку Now dозвращает значение типа Date. Далее вступает в игру Excel. Так как ячейка имеет текстовый формат, то полученное значение типа Variant/Date преобразуется в текст в соответствии с локализацией en_US, поскольку Excel "внутри" работает в соответствии с этой локализацией (как и Calc).

A что изменится, если выделенная ячейка будет иметь общий формат?

1. Calc

Basic передаст методу setFormula тот же текст, что и в ранее разобранном случае. Calc произведет анализ текста с точки зрения возможности преобразования в число или дату в соответствии с локализацией en_US. Поскольку это не возможно, в ячейку будет занесен полученный текст, формат ячейки преобразован в текстовый.

2. Excel

Получив значение типа Variant/Date Excel преобразует его в число занесет в ячейку. Локализованный числовой формат ячейки будет ДД.ММ.ГГГГ ч:мм (в сооответствии региональными установками Windows).

Для самостоятельного разбора предлагается разобрать ситуации, когда производится присвоение свойства FormulaLocal (Calc и Excel).

Если задача кому-то показалась интересной, то дайте мне знать, и мы продолжим спецсеминар.  Улыбка
Записан

Владимир.
Страниц: 1 2 »   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!