Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 1. 4. 2016 10:05:14

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 697

funkce trim v makru VYŘEŠENO

od LP přebírám tuto funkci a nějak mi nefachčí funkce Trim, čím to? (LO 5.0.2.2)
(s funkcí Trim nebo bez ní, výsledek je stále stejný)

Function RemoveZnaky (Vstup as string, Optional Smazat as String) as String
	Dim i as integer
	
	If IsMissing(Smazat) Then Smazat = ".,?!:)("
	
	For i = 1 to Len(Smazat)
		Vstup = Replace(Vstup, Mid(Smazat, i, 1), " ")
	Next i
	Vstup = Trim(Vstup)
	RemoveZnaky = Vstup
End Function

Editoval ludviktrnka (3. 4. 2016 16:32:24)


LibreOffice 5.4.

Offline

#2 1. 4. 2016 10:17:03

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: funkce trim v makru VYŘEŠENO

Není to Ludvíku tím, že chcete zcela odstranit mezeru z textu? Viz nápoběda : TRIM
Odstraní mezery z řetězce a ponechá mezi slovy jen jednoznakovou mezeru.

  Spíš zadejte odstranění přímo znaku (mezera), nebo číslo Charu (32).


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 1. 4. 2016 10:22:18

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 697

Re: funkce trim v makru VYŘEŠENO

ne ne, očekávám stejné chování jako v listu tedy "odstranění nedbytečných mezer" tj. před, za, a dvojté mezery uvnitř "jednomezery zůstávají". Toto neodstraňuje vůbec nic.
Např TRIM("a    b") = a    b; očekávám TRIM("a    b") = a b

Editoval ludviktrnka (1. 4. 2016 10:23:59)


LibreOffice 5.4.

Offline

#4 1. 4. 2016 10:31:16

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: funkce trim v makru VYŘEŠENO

Otestujte číslo znaku mezery. V sešitě nechte jako první tu mezeru a vedle zadejte UNICODE(buňka), respektive UNICHAR(číslo). Jestli je tam něco jiného nežli číslo 32 tak musíte změnit zadání. Může to být například TAB (9), někdy by tam mohl být i znak CHAR(9), nebo (Char(13).

Editoval neutr (1. 4. 2016 10:31:52)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#5 1. 4. 2016 14:53:08

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 842

Re: funkce trim v makru VYŘEŠENO

Funce Trim v basicu odstraňuje jen mezery na začátku a na konci. (Chová se to jinak, než v listu.)

Sub FceTrim()
   Dim svc As Object
   Dim Text as String 
   
   Text = "   a        b   "
   
   ' basic
   print trim(Text)
   
   ' Funkce listu
   svc = createUnoService("com.sun.star.sheet.FunctionAccess")
   print svc.callFunction("Trim", Array(Text))
End Sub

Offline

#6 2. 4. 2016 06:58:28

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: funkce trim v makru VYŘEŠENO

Otestujte tuhle implementaci :

Function TRIM2(X As Variant) As Variant
   calc = createUnoService( "com.sun.star.sheet.FunctionAccess")
   Trim2 = calc.CallFunction( "TRIM", ARRAY(X) )   
End Function

Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#7 3. 4. 2016 16:30:46

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 697

Re: funkce trim v makru VYŘEŠENO

Děkuji za vyjasnění.


LibreOffice 5.4.

Offline

Zápatí