МР
|
В VBA Excel устанавливаю NumberFormat "0,00" - число в ячейке отображается с 2-мя дес. знаками,"0,00000" - с 5-ю,"0,000" - с 3-мя,"0" - без дес. знаков. Как того же достичь в ОО Basic для Calc? NumerFormat=2 приводит к отображению с 2-мя дес. знаками, 0 - без дес. знаков. Вместо 5 или 3-х дес. знаков отображается галиматья какая-то. На форуме, не нашел, а вроде не уникальная "потребность".
|
|
|
Записан
|
|
|
|
rami
|
Свойство ячейки NumberFormat принимает номер формата, а не строку. Если не знаете номер нужного формата, назначьте вручную формат ячейки и посмотрите какой у него номер. Если нужного формата нет, можно создать свой. Что вы хотите сделать? Покажите макрос.
|
|
|
Записан
|
|
|
|
МР
|
Макроса как такового нет. Есть внешняя по отношению к LO программа , есть написанная на языке этой программы подпрограмма, записывающая значение в ячейку открытой в Excel или Calc электронной таблицы. Выбор офиса происходит вне этой подпрограммы, но он ей известен. Всего-то захотел опционально вместе с числовым значением обрабатывать в подпрограмме количество отображаемых дес. знаков. Для Excel заранее знал как, полагал что и для Calc не сложнее. Разобрался уже, прописал в десяток ячеек десяток форматов и прочитал их. Поскольку закономерности в нумерации не нашел, просто буду держать их в массиве. Вообще, предварительно попробовал, как в VBA, разузнать что-то с помощью макрорекордера. При установке формата ячейки получил вот такой макрос: sub M1 rem ---------------------------------------------------------------------- rem define variables dim document as object dim dispatcher as object rem ---------------------------------------------------------------------- rem get access to the document document = ThisComponent.CurrentController.Frame dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ---------------------------------------------------------------------- dim args1(0) as new com.sun.star.beans.PropertyValue args1(0).Name = "NumberFormatValue" args1(0).Value = 115
dispatcher.executeDispatch(document, ".uno:NumberFormatValue", "", 0, args1())
end sub Догадываюсь теперь, что это установка NumberFormat =115 . Но каким-то уж очень окольным путем (
|
|
|
Записан
|
|
|
|
mikekaganski
|
Посмотрите здесь, как правильно определять код формата. (Где-то здесь на форуме эта тема тоже мелькала - не помню где.)
|
|
|
Записан
|
|
|
|
МР
|
Начинаю понимать, что номера фоматов - не нечто стандартное, а могут меняться от документа к документу. Своеобразно...
|
|
|
Записан
|
|
|
|
rami
|
Начинаю понимать, что номера фоматов - не нечто стандартное, а могут меняться от документа к документу. Своеобразно... Есть "стандартный" набор форматов (с номерами от 0 до 100, но не все номера использованы) — насколько я знаю, их можно удалить, но при попытке "вернуть" будет создан новый пользовательский формат. Если не играться форматами, можно считать, что их номера не меняются. Если хотите быть уверенным, то можно сначала запросить (макросом) номер нужного формата, а затем его назначить ячейке.
|
|
|
Записан
|
|
|
|
МР
|
Нашел подходящий макрос на сайте АОО, "подкрутил " и втащил в свой код. Запускаю при открытии книги, записываю в массив 11 кодов (2 стандартных+9 создаю), потом уже из массива достаю. Почему-то возвращает коды не 1 и 2 и создает не 126 и далее, как при ручном задании формата в ячейках, а 10001,10002, 10126. Но работает, менять не стал. Исходный макрос, пожалуй ,здесь продублирую, вдруг кто ещё искать станет. Если при этом что нарушаю, просьба к модератору стереть и сильно не банить function fnGetNumberFormatId(oDoc, sNumberFormat) sCharLocale = oDoc.getPropertyValue("CharLocale") nFormatId = oDoc.getNumberFormats.queryKey(sNumberFormat, sCharLocale, false) if nFormatId = -1 then 'Not yet defined nFormatId = oDoc.getNumberFormats.addNew(sNumberFormat, sCharLocale) end if fnGetNumberFormatId = nFormatId end function Всем откликнувшимся спасибо за помощь.
|
|
« Последнее редактирование: 30 Апрель 2019, 21:59 от МР »
|
Записан
|
|
|
|
rami
|
Почему-то возвращает коды не 1 и 2 и создает не 126 и далее, как при ручном задании формата в ячейках, а 10001,10002, 10126. Номера от 0 до 100 для стандартных форматов, другие для разных локалей, для российской локали 10000 и далее. Если при этом что нарушаю, просьба к модератору стереть и сильно не банить А что нарушаете? если не секрет.
|
|
|
Записан
|
|
|
|
МР
|
А что нарушаете? если не секрет. Надеюсь, что ничего не нарушаю. Но пока просматривал форум, обратил внимание, что довольно много удаленных модератором фрагментов кода. Почему, за что - мне неизвестно. А тут макрос цельнотянутый со стороннего ресурса . Мало ли...
|
|
« Последнее редактирование: 30 Апрель 2019, 23:33 от МР »
|
Записан
|
|
|
|
rami
|
По техническим причинам были удалены все вложения в старых темах до 2014г. Но если кто-то интересуется этими темами, мы можем либо попытаться восстановить удалённые документы либо решить вопрос заново.
|
|
|
Записан
|
|
|
|
|