LINUX.ORG.RU

Создание макросов в OOo

 , ,


1

1

В общем задача такова: написать функцию, чтобы можно было подставив в нее значения ячеек а диалоге, получать результат в заданной ячейке.

Например в одной ячейке кликаю и ставлю =, затем пишу имя своей функции и появляется диалог запроса нужных ячеек.

В MSO такое написал за 10 минут, BASIC он такой BASIC. В OOo тоже BASIC, но он не видит моих функций!!!

Может есть где инструкция, типа делай раз, два...

Тут пример того что пишу... ну суть понятна, по координатам расстояние находить. в две колонки широта и долгота.

function GetDistance(lat1 , long1, lat2, long2 As Double) dim PI, Distance as Double PI = PI() Distance = /* */

GetDistance = Distance end function

★★

Может есть где инструкция, типа делай раз, два...

В нете очень мало инфы по этой реализации.

visual ★★★
()
Ответ на: комментарий от visual

Уже заметил, нашел целую книгу, но нет в ней конкретного примера, зато есть описание типов и как ячейки двигать, а такого простого случая нет!

weare ★★
() автор топика
Ответ на: комментарий от weare

В общем если функция берет несколько значений, нужно не через запятую а через ;

Решено.

Теперь не пойму почему внутри макроса считается COS() но не считается ACOS?

weare ★★
() автор топика
Ответ на: комментарий от weare
Function GETDISTANCE(Lat1 As Double, Long1 As Double, Lat2 As Double, Long2 As Double) as Double
	dim EARTHRAD,Distance as Double
	EARTHRAD = 6370000
	Lat1 = Lat1*Pi()/180
	Long1 = Long1*Pi()/180
	Lat2 = Lat2*Pi()/180
	Long2 = Long2*Pi()/180	
	'd = acos( sin(φ1).sin(φ2) + cos(φ1).cos(φ2).cos(Δλ) ).R    
	dim sinonsin, cosoncos, ad as Double
	sinonsin = SIN(lat1)*SIN(lat2)
	cosoncos = COS(lat1)*COS(lat2)*COS(long2-long1)
	Distance = Arccos(sinonsin + cosoncos)* EARTHRAD
    GETDISTANCE = Distance 
End Function

Function Arccos(X As Double) As Double 
	dim calc 
   	calc = createUnoService( "com.sun.star.sheet.FunctionAccess") 
	Arccos = calc.CallFunction( "ACOS", ARRAY(X) ) 
End Function 

weare ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.