Использование функции 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

спасибо

7
задан Puck
10.12.2022 20:13 Количество просмотров материала 2631
Распечатать страницу

1 ответ

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

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

Case "0"
    binOut = binOut & "0000"
3
отвечен Lyrl 2022-12-12 04:01

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх