Макрос libre calc работает до перезагрузки компьютера

У меня есть небольшая проблема с макросом Libre office Calc.
Я использовал код из учебника по макросам libre office calc и модифицировал его для своих нужд.
Тем не менее, это сработало при первом запуске, но на следующий день не сработало. Я попытался изменить строки, включивOption VBAsupport 1 а также Option Compatible включается и выключается, но при включенной поддержке все, что я получил #NULL? назад, в то время как с отключенной поддержкой я бы получил "BASIC error: Sub-function not defined" с указателем на строку skaicius = Round(y)- понятно, потому что я отключил поддержку VBA.
При комментировании строкиIf x(iRow, iCol) >= 0 Then TheSum = TheSum + "," + CStr(normalRound(x(iRow, iCol))), то код работает, но без закомментированной строки код бесполезен.
Через час CTRL-X и CTRL-V, отключение / включение разных строк - работает! Но я не добавляю и не удаляю никаких строк, переменных и т. Д.
Но как только я перезагружаю свой компьютер, код, который работал раньше, больше не работает.

Код, который сейчас как-то работает:

REM  *****  BASIC  *****    
'Option VBASupport 1    
'Option Compatible

Sub Main
end sub

Function PositiveSum(Optional x)  
Dim TheSum As String  
Dim iRow As Double
Dim iCol As Double
TheSum = "{"  
If NOT IsMissing(x) Then
    If NOT IsArray(x) Then
         ' If x > 0 Then TheSum = CStr(Round(x))
          Else
            For iRow = LBound(x, 1) To UBound(x, 1)
               TheSum = TheSum +(x(iRow, LBound(x,2)))*100 +":["
                For iCol = LBound(x, 2)+1 To UBound(x, 2)
                 
                   If x(iRow, iCol) >= 0 Then TheSum = TheSum + "," + CStr(normalRound(x(iRow, iCol)))
                Next
                TheSum = TheSum + "],"   
            Next    
          End If  
    End If
    PositiveSum =  TheSum + "}.get(aukstis, )"
End Function 

Function normalRound(Optional y)
Dim skaicius as Double
Dim skaicius2 as Double
skaicius = Round(y)
skaicius2 = y
If skaicius < skaicius2 and skaicius+0.5 < skaicius2 Then skaicius = skaicius+1
If skaicius > skaicius2 and skaicius-0.5 > skaicius2 Then skaicius = skaicius-1

normalRound = skaicius
End Function

Вопрос: Почему код так себя ведет? Почему сейчас работает (пока смотрю - вообще не должно работать), а после перезагрузки компьютера работать не будет, хотя до этого времени я ничего менять не буду?

Код используется для того, чтобы взять диапазон ячеек и добавить их в одну длинную строку, чтобы я мог скопировать в другой код.

РЕДАКТИРОВАТЬ:
я вызываю функциюPositiveSum в качестве =PositiveSum(A1:C3)где A1:C3 - мой массив.
Понятия не имею, что не работает, это мой вопрос. Потому что постоянно, чтобы код работал, мне приходится копировать и вставлять его несколько раз, комментировать и раскомментировать, чтобы он снова заработал. Конечно, мне не хватает какой-то конкретной причины, по которой он каждый раз ломается, но через несколько недель я признаю, что не смог найти причину / причину

0 ответов

Другие вопросы по тегам