Похожие вопросы

Как рисовать от руки (как карандаш) в LibreOffice Draw?
Преобразовать ppt в jpg
Полноэкранный режим в LibreOffice Draw?
Как исправить ошибку X11: не удается открыть дисплей
Libre office: как форматировать титульные листы для книги (избегая отсутствующей пустой страницы при экспорте pdf-файла)
Отключение проверки орфографии в OpenOffice Calc (или LibreOfffice Calc)
Заполнить прямо в OpenOffice / LibreOffice
Как сделать панель предварительного просмотра Проводника Windows, чтобы показать LibreOffice файлов предварительного просмотра?
Как изменить значки на панелях инструментов LibreOffice?
Изменение фоновой заливки ячеек на листе LibreOffice, содержащих определенный текст
Как использовать чрезвычайно большие числа в программах для работы с электронными таблицами?
LibreOffice, как сохранить начальные нули при экспорте с помощью командной строки?
LibreOffice на OS X: запуск soffice продолжает говорить нет информации.plist или нет NSPrincipalClass в Info.файл plist
Изменение цвета шрифта скрытых символов LibreOffice Writer
Как получить LibreOffice для сносок 'number' в порядке *,†,‡, § и т.д.?

Использование функции LibreOffice Calc в макросе

Я пытаюсь создать базовую макрофункцию в calc для выполнения шестнадцатеричного преобразования в двоичное с более чем 10 битами. Но у меня много неприятностей.

во-первых, где я могу найти документацию? Я только нашел очень мало примеров, которые не помогли много и основное руководство тоже довольно лаконично.

и в основном (если первый не отвечает на него), как вы можете видеть в примере ниже, я пытаюсь использовать CONCATENATE внутри макроса. какой совершенно работая функция внутри электронной таблицы. Но я получаю следующее сообщение об ошибке:

Sub-procedure or function procedure not defined.

Итак, как использовать такую функцию внутри макроса, возможно ли это вообще?

вот код моего макроса:

Function HEX2BINREAL(hexIn as string) as string

   n = len(hexIn)
   Dim binOut as string
   binOut = ""

   For i = 1 to n
      ActChar = Mid(hexIn,i,1)
      Select Case ActChar
        Case "0"
            binOut = CONCATENATE(binOut,"0000")
        Case "1"
            binOut = CONCATENATE(binOut,"0001")
        Case "2"
            binOut = CONCATENATE(binOut,"0010")
        Case "3"
            binOut = CONCATENATE(binOut,"0011")
        Case "4"
            binOut = CONCATENATE(binOut,"0100")
        Case "5"
            binOut = CONCATENATE(binOut,"0101")
        Case "6"
            binOut = CONCATENATE(binOut,"0110")
        Case "7"
            binOut = CONCATENATE(binOut,"0111")
        Case "8"
            binOut = CONCATENATE(binOut,"1000")
        Case "9"
            binOut = CONCATENATE(binOut,"1001")
        Case "a", "A"
            binOut = CONCATENATE(binOut,"1010")
        Case "b", "B"
            binOut = CONCATENATE(binOut,"1011")
        Case "c", "C"
            binOut = CONCATENATE(binOut,"1100")
        Case "d", "D"
            binOut = CONCATENATE(binOut,"1101")
        Case "e", "E"
            binOut = CONCATENATE(binOut,"1110")
        Case "f", "F"
            binOut = CONCATENATE(binOut,"1111")
        End Select
   next i
HEX2BINREAL = binOut
end Function

спасибо

5
задан Puck
источник

1 ответов

макроязык не имеет доступа к функциям электронной таблицы, если вы не тратите несколько строк, загружая тот, который вы хотите.

для этой цели было бы намного проще просто использовать базовый оператор конкатенации &. Вроде так:

Case "0"
    binOut = binOut & "0000"
3
отвечен Lyrl 2016-01-26 14:47:41
источник