Chcę dodać "funkcję użytkownika" jednak kod jest niepoprawny, jak go poprawić ?
Function EAN(a)
EAN=REGEX(a;"\b\d{13}\b")
End Function
Własna funkcja problem składni.
-
- Posty: 92
- Rejestracja: wt paź 04, 2022 5:48 pm
Własna funkcja problem składni.
7.5.6.2 (X86_64)
Re: Własna funkcja problem składni.
Własną funkcję piszesz w Basicu. W nim nie ma instrukcji REGEX. To jest wewnętrzna funkcja Calc-a.
Nie rozumiem też, po co piszesz taką funkcję, skoro w Calc-u możesz wpisać tę formułę bezpośrednio.
Nie rozumiem też, po co piszesz taką funkcję, skoro w Calc-u możesz wpisać tę formułę bezpośrednio.
AOO 4.1.15, LO 24.8.2 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
-
- Posty: 92
- Rejestracja: wt paź 04, 2022 5:48 pm
Re: Własna funkcja problem składni.
1.Dla wygody, czytelności zagnieżdżonych funkcji, szybkości pisania funkcji (długie często używane funkcję mogą być skrócone do jednej-trzech liter)
2.Dla poszerzenia umiejętności w LO, funkcja Ean to dopiero pierwsza funkcja jaką próbowałem dodać do LO bez tego nie wiedziałbym że funkcja regex nie może być w prosty sposób dodana do makra (Czy jest sposób by to ominąć np. przez biblioteki ?).
Dodatkowo funkcja ean mogła by być jeszcze dłuższa, ponieważ mogła by sprawdzać cyfrę kontrolną.
7.5.6.2 (X86_64)
Re: Własna funkcja problem składni.
Żadna funkcja Calc-a nie może zostać wprost użyta w Basicu. Trzeba skorzystać z serwisu com.sun.star.sheet.FunctionAccess.
Ogólnie wygląda to tak:
Dim oFA
oFA = createUnoService("com.sun.star.sheet.FunctionAccess")
wynik= oFA.callFunction( "Nazwa funkcji", array(argumenty funkcji))
Nazwa funkcji musi być podana w angielskiej wersji (akurat REGEX nie ma wersji polskiej) i nie musi być zapisana wielkimi literami.
W tablicy należy podać kolejne argumenty wywoływanej funkcji.
W przypadku twojego zapytania funkcja wyglądałaby tak:
Na temat tworzenia własnych funkcji napisałem tu: https://yestok.pl/lbo/y61.php
Ogólnie wygląda to tak:
Dim oFA
oFA = createUnoService("com.sun.star.sheet.FunctionAccess")
wynik= oFA.callFunction( "Nazwa funkcji", array(argumenty funkcji))
Nazwa funkcji musi być podana w angielskiej wersji (akurat REGEX nie ma wersji polskiej) i nie musi być zapisana wielkimi literami.
W tablicy należy podać kolejne argumenty wywoływanej funkcji.
W przypadku twojego zapytania funkcja wyglądałaby tak:
Kod: Zaznacz cały
Function cf(a)
oFA = createUnoService( "com.sun.star.sheet.FunctionAccess" )
cf= oFA.callFunction( "regex", array( a,"\b\d{13}\b" ) )
End Function
AOO 4.1.15, LO 24.8.2 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
-
- Posty: 92
- Rejestracja: wt paź 04, 2022 5:48 pm
Re: Własna funkcja problem składni.[solved]
Dziękuję za odpowiedź.Jermor pisze: ↑sob lis 18, 2023 11:41 am Żadna funkcja Calc-a nie może zostać wprost użyta w Basicu. Trzeba skorzystać z serwisu com.sun.star.sheet.FunctionAccess.
Ogólnie wygląda to tak:
Dim oFA
oFA = createUnoService("com.sun.star.sheet.FunctionAccess")
wynik= oFA.callFunction( "Nazwa funkcji", array(argumenty funkcji))
Nazwa funkcji musi być podana w angielskiej wersji (akurat REGEX nie ma wersji polskiej) i nie musi być zapisana wielkimi literami.
W tablicy należy podać kolejne argumenty wywoływanej funkcji.
W przypadku twojego zapytania funkcja wyglądałaby tak:Na temat tworzenia własnych funkcji napisałem tu: https://yestok.pl/lbo/y61.phpKod: Zaznacz cały
Function cf(a) oFA = createUnoService( "com.sun.star.sheet.FunctionAccess" ) cf= oFA.callFunction( "regex", array( a,"\b\d{13}\b" ) ) End Function
7.5.6.2 (X86_64)