[Oo-discuss] Обработка пустых ячеек в пользовательских функциях Calc

fyva menenem на bk.ru
Пн Июл 19 12:33:23 UTC 2010


Можно использовать MyTest с другой функцией, которая будет передавать 
для функции MyTest имя ячейки, например, MYTEST(CELL("COORD";A1))

REM  *****  BASIC  *****

Function MyTest(Optional sa as String) as String
Dim fa As Object, a As Object, ars(1) As String
sa=Join(Split(sa,"$"),"")
ars()=Split(sa,":")
Sheet=ThisComponent.Sheets(asc(ars(0))-65)
cell=Sheet.getCellRangeByName(ars(1))
fa = CreateUnoService( "com.sun.star.sheet.FunctionAccess" )
ae = fa.callFunction("CELL", Array("TYPE", cell.DataArray))
If ae<>"b" Then MyTest = ae & " :   " & cell.Value else MyTest=""
End Function

19.07.2010 17:09, Dmitry Drozdov пишет:
> Добрый день!
>
> Есть задача, которая может быть решена пользовательской функцией на
> Basic в OOo Calc. По смыслу задачи на вход могут подаваться и пустые
> значения (логика их обработки описывается в функции). Однако, если в
> качестве аргумента (параметра) пользовательской функции Basic передаётся
> пустая ячейка, то OOo Calc подставляет значение 0 (ноль, типа Double).
>
> В приложенном примере ячейка A3 пустая, а B3 в результате выполнения
> функции, приведенной ниже, содержит "Double :  0."
>
> Вот тестовая функция, демонстрирующая такое поведение Calc:
> Function MyTest(Optional a as Variant) as String
> If Not IsMissing(a) Then
> 	MyTest = TypeName(a)&  " :   "&  a
> Else
> 	MyTest = "Нет значения"
> End If
> End Function
>
> Поиск у Питоньяка и в Google, а также вопрос на форуме i-rs.ru разумного
> результата не дали. Есть у коллег какие-то решения? Обрабатывать ноль,
> как пропущенное значение по условиям задачи нельзя: ноль является в
> части случаев вполне допустимым входным параметром.
>
> Кстати, обратите внимание, как обрабатывается дата; она тоже в функции
> преобразуется к Double.
>
> Пример в приложении.
>
>
>
>
> _______________________________________________
> Oo-discuss mailing list
> Oo-discuss на openoffice.ru
> https://lists.openoffice.ru/mailman/listinfo/oo-discuss



Подробная информация о списке рассылки Oo-discuss