Макрос 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 - мой массив.
Понятия не имею, что не работает, это мой вопрос. Потому что постоянно, чтобы код работал, мне приходится копировать и вставлять его несколько раз, комментировать и раскомментировать, чтобы он снова заработал. Конечно, мне не хватает какой-то конкретной причины, по которой он каждый раз ломается, но через несколько недель я признаю, что не смог найти причину / причину