Я пытаюсь создать базовую функцию макроса в 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

Спасибо

1 ответ1

3

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

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

Case "0"
    binOut = binOut & "0000"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .