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

#1 7. 6. 2017 06:20:18

Tajnejdrop
Člen
Registrace: 26. 5. 2017
Příspěvků: 10

Aktuální datum - Vyřešno

Dobrý den. Mám menší problém ohledně data. Mám funkci IF ve které, je dáno že pokud v bunce vedle ní je cokoliv napsáno, zobrazí se v té dané bunce aktuální datum. Mám použitu funkci Today. Ale já potřebuju aby to datum zůstalo stejné i další den, tedy aby zůstalo stejné po celou dobu ale díky funkci today se pořád přepisuje. Neví někdo prosím jak to vyřešit aby datum zůstalo jen z onoho dne? Děkuji.

Editoval Tajnejdrop (7. 6. 2017 09:27:58)

Offline

#2 7. 6. 2017 06:55:26

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

Re: Aktuální datum - Vyřešno

Vzorcem to nelze. Vložte ručně nebo klávesovou zkratkou ( Ctrl+; ) - funguje v LO nevím zda v OO - nebo makrem.

Editoval ludviktrnka (7. 6. 2017 06:55:54)


LibreOffice 5.2.2.2

Offline

#3 7. 6. 2017 07:14:35

Tajnejdrop
Člen
Registrace: 26. 5. 2017
Příspěvků: 10

Re: Aktuální datum - Vyřešno

Takže zaměstnanci si tedy budou muset datum psát ručně? V tom případě mám strach co s tím udělají big_smile A díky.

Offline

#4 7. 6. 2017 07:51:46

kabi
Člen
Registrace: 1. 6. 2017
Příspěvků: 107

Re: Aktuální datum - Vyřešno

Nemusí, jak psal ludviktrnka, můžete jim to ošetřit makrem :-)

Pokud něco zaměstnanci vyplňují do toho předchozího sloupce, můžete makrem nastavit, aby se v tom případě do toho sloupce s datumem uložil akuální datum.

Editoval kabi (7. 6. 2017 08:29:42)

Offline

#5 7. 6. 2017 08:54:54

Tajnejdrop
Člen
Registrace: 26. 5. 2017
Příspěvků: 10

Re: Aktuální datum - Vyřešno

nějak takhle? If Range("A1").Value <> "" Then

Range("A2").Value = Date

End If

End Sub

Offline

#6 7. 6. 2017 09:05:05

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

Re: Aktuální datum - Vyřešno

Mám takovou prasáckou funkci:

Function CreateDateHere()

	dokument = ThisComponent
	vyber = dokument.currentselection	
	list = dokument.sheets(vyber.rangeaddress.sheet)

	radek = vyber.rangeaddress.startrow
	sloupec = vyber.rangeaddress.startcolumn
	
	bunka = list.getcellbyposition(sloupec-1, radek )
	bunka.Value = date()
'	bunka.NumberFormat = 50 '40 je HH:MM, 41 je HH:MM:SSS
	
End Function

ve sloupci B se bude vyplňovat a ve sloupci A bude funkce =IF(ISBLANK(B1);"";CREATEDATEHERE())
(ten formát nějak nefunguje, je potřeba sloupec předformátovat jako datum

Po vyplnění buňky ve sloupci B se vzopec ve sloupci A vymaže a nahradí se aktuálním datem, které zůstane napevno.


LibreOffice 5.2.2.2

Offline

#7 7. 6. 2017 09:05:59

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

Re: Aktuální datum - Vyřešno

Ono to lze trošku obejít ale bez valného efektu. Makro je mnohem lepší

=VALUE(TEXT(TODAY();0))

     Tenhle vzorec načte TODAY(), udělá z něj text a nakonec se text převede na hodnotu čísla. Tím by se aktualizace měla vyřadit, je to ale jen číslo. K dokonalosti se to musí dovést pomocí formátu buňky. Navíc je potřeba to nějak aktivovat a pojistit nějakou podmínkou. Takže zabalit do IF a dotazovat se na obsah jiné buňky ap. Je to jako drbat se levou rukou za pravým uchem.


     Když se formát buňky nastaví na "Datum" FORMÁT > BUŇKY > KARTA ČÍSLO > KATEGORIE vybereme datum. Bohu žel nechápu k čemu je to dobré. Určitě ne k prezentaci zaměstnanců - příchody, směny ap. Problém je že při nové aktivaci stejného vzorce by k aktualizaci dojít mělo. Nikoliv však automaticky. Stajně by se to muselo zabezpečit nějakým blokem do uzamčeného listu.
     Takže lepší by byla konstrukce zapsání jména a při zápisu spustit makro které například vytvoří z funkce today() jenom text. Panu Trnkovi musím dát za pravdu protože já bych sám těmto konstrukcím moc nevěřil pokud by k nim měli přístup k sešitu jiní lidě.


     Makro se dá snadno nahrát záznamníkem. Při ukládání sešitu se vše načte a vloží jen jako text a čísla + formát. K prezentaci by stačilo tlačítko "potvrdit zápis" který by udělal totéž. nemám představu.
     Není problém napsat makro které se dotáže na jméno, příjmení nebo osobní číslo a třeba heslo. To se pak může zapsat viditelně a ve skryté kopii. Zápis je možné dělat přes zamčený list. Potom do listu nikdo nic bez makra nenapíše i když to uvidí. Když popíšete lépe co potřebujete tak Vám udělám takové makro a může to být hromadný přístup pro tisíce lidí - každý své vlastní heslo. Mám to někde hotové - dělal jsem to před několika roky. Byl to vzor který jsem nezveřejnil a budu hledat nebo napíšu jednoduchý nový.


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

Offline

#8 7. 6. 2017 09:15:31

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

Re: Aktuální datum - Vyřešno

Pro pana Trnku :
   Ten formát sice popisují takto, ale já mám poznamenaný formát jinak - jako číslo 36 :

Cell.NumberFormat=číslo
'F_o_r_m_á_t_y
'číslo
'1)	Standard	= 0
'2)	0	    	= 1
'3)	0.00		= 2
'4)	#,##0		= 3
'5)	#,##0.00	= 4
'6)	#,###.00	= 5
'procento
'7)	0%		= 10
'8)	0.00%		= 11
'Měna
'9)	[$Kč-405]#,##0;-[$Kč-405]#,##0			= 101
'10)	[$Kč-405]#,##0.00;-[$Kč-405]#,##0.00		= 103
'11)	[$Kč-405]#,##0;[RED]-[$Kč-405]#,##0		= 103
'12)	[$Kč-405]#,##0.00;[RED]-$Kč-405]#,##0.00	= 104
'13)	[$€-407]#,##0.--;[RED]-[$€-407]#,##0.--		= 105
'14)	#,##0 [$CZK];[RED]-#,##0 [$CZK]			= 110
'15)	Kč#,##0;-Kč#,##0				= 111
'16)	Kč#,##0.00;-Kč#,##0.00				= 20
'17)	Kč#,##0;[RED]-Kč#,##0				= 21
'18)	Kč#,##0.00;[RED]-Kč#,##0.00			= 22
'19)	#,##0 CCC					= 24
'20)	Kč#,##0.--;[RED]-Kč#,##0.--			= 25
'Datum a čas (jen Datum 36)
'21)	YY/M/D				= 30
'22)	YYYYMMDD(AAAA)		        = 38
'23)	YY/MM/DD			= 37
'24)	YYYY/MM/DD			= 36
'25)	YYMD				= 39
'26)	YYYYMD				= 75
'27)	GGGEMD				= 80
'28)	YYYYMD				= 76
'29)	GGGEMD(AAAA)		        = 81
'30)	YYMD(AAA)			= 77
'31)	GGGEMD(AAA)		        = 31
'32)	YYYYMD(AAA)		        = 78
'33)	YYYYMD(AAAA)		        = 79
'34)	MM.DD				= 82
'35)	GE.M.D				= 83
'36)	YYYY-MM-DD			= 84
'37)	YY/MM				= 32
'38)	MD				= 33
'39)	M				= 34
'40)	YY QQ				= 35
'41)	WW				= 85
'42)	YY/MM/DD HH:MM		        = 50
'43)	YYYY/M/D H:MM		        = 51
'44)	H:MM				= 40
'45)	HH:MM:SS			= 41
'46)	AM/PM H:MM			= 42
'47)	AM/PM H:MM:SS		        = 43
'48)	[HH]:MM:SS			= 44
'49)	MM:SS.00			= 45
'50)	[HH]:MM:SS.00		        = 46
'51)	YY/MM/DD HH:MM		        = 50
'52)	YYYY/M/D H:MM		        = 51
'Vědecký
'53)	0.00E+000			= 60
'54)	0.00E+00			= 61
'zlomek
'55)	# ?/?				= 70
'56)	# ??/??				= 71
'Logický
'57)	BOOLEAN				= 99
'Text
'58)	@				= 100

     Bohu žel teď nevím jestli platí číslo vlevo, nebo vpravo:-) Já to vždy raději trestuji znovu. Mělo by to být samozřejmě číslo vpravo (raději jsem to srovnal). Vím že mi některé formáty nechodily tak jak měly. Ale to datum by mělo být 36 přestože je to v notaci jakou má USA. Takže s tím by mohly být potíže. Už jsem to kolikrát chtěl prohnat cyklem a ověřit hodnoty pro čekou notaci. Ještě jsem se k tomu nedokopal.

Editoval neutr (7. 6. 2017 09:34:17)


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

Offline

#9 7. 6. 2017 09:27:30

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

Re: Aktuální datum - Vyřešno

Díky, už jsem se dávno chystal si takovou tabulku pořídit (na webu jsem ji nenašel), ale nedostal jsem se k tomu. Nicméně tady to z nějakých důvodů nefunguje. Ale vzhledem k šílenosti téhle funkce se ani moc nedivím. Myslím, že teď se jí i podařilo mi shodit LO. Není to nic moc.


LibreOffice 5.2.2.2

Offline

#10 7. 6. 2017 09:55:38

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

Re: Aktuální datum - Vyřešno

Ona existuje možnost dát tam formát pomocí UNO. To je ale opičárna :

sub FormatDatum
dim document   as object
dim dispatcher as object
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "NumberFormatValue"
args1(0).Value = 36
dispatcher.executeDispatch(document, ".uno:NumberFormatValue", "", 0, args1())
end sub

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

Offline

#11 7. 6. 2017 11:58:21

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

Re: Aktuální datum - Vyřešno

Tajnejdrop: Jak jste to vyřešil?


LibreOffice 5.2.2.2

Offline

#12 7. 6. 2017 12:36:14

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

Re: Aktuální datum - Vyřešno

Tak jsem si to otestoval a ten můj vzorec se chová stejně jako NOW(), nebo DATE(). Proto jsem vlezl do poznámek a tam jsem našel postup. Nejde ani tak o ten vzorec jako o jeho přepočítávání. Když se vypne automatický přepočet tak teprve pak je nutné jednotlivé aktivování buňky aby se změnila.
     Pro vytvoření funkčního nastavení se musí postavit uzavřené vzorce a spustit iterace pro přepočet podmínek které byly blokovány proti přestavění systémového data a nebo času na stroji. Byl to ale popis pro knihu příchodů a odchodů kterou vyplňovali sami zaměstnanci klasicky zápisem jména a času. Při otevření knihy příchodů se makrem pro kontrolu nahráli vzorce a při vypnutí se kontrolní skrytý list ukládal jako csv s názvem NOW. Nebyl odolný proti výpadkům elektřiny nebo pádům systému.
     Později jsem to předělal jen na makra a tam zůstaly poznámky o tom jak sestrojit vzorce. Problém řešil zejména chybně zadané hodnoty. Podobně jsem řešil i peněžní deník. Ovšem když jsem zjistil jak zamknout knihovnu maker tak vzorcům odzvonilo. Už je to hezkých pár let zpátky.


PS To by mne také zajímalo, ale myslím že to vzdal.

Editoval neutr (7. 6. 2017 12:38:44)


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

Offline

#13 9. 6. 2017 07:58:59

Tajnejdrop
Člen
Registrace: 26. 5. 2017
Příspěvků: 10

Re: Aktuální datum - Vyřešno

Nakonec sem to vyřešil Makrem od pana Trnky, ale jelikož to vkládalo celé datum, a já to potřeboval jen čistě jako čas tak mi to bylo k ničemu big_smile, ale i tak díky za pomoc.

Offline

#14 9. 6. 2017 08:09:38

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

Re: Aktuální datum - Vyřešno

Tajnejdrop napsal(a)

Dobrý den. Mám menší problém ohledně data. Mám funkci IF ve které, je dáno že pokud v bunce vedle ní je cokoliv napsáno, zobrazí se v té dané bunce aktuální datum. Mám použitu funkci Today. Ale já potřebuju aby to datum zůstalo stejné i další den, tedy aby zůstalo stejné po celou dobu ale díky funkci today se pořád přepisuje. Neví někdo prosím jak to vyřešit aby datum zůstalo jen z onoho dne? Děkuji.

     Takhle jste to zadával - tedy DATUM a ne čas. Ale pan Trnka tam i ten samostatný čas uváděl jako poznámku. Takže já jsem jen odstranil vše co není potřeba. Ještě upozorňuji že ten čas je včetně sekund. To někdy není vyžadováno, ale snadno se to upraví jiným číslem. Jakým můžete dovodit z tabulky kterou sjem uvedl ve svém předchozím příspěvku.

Function CreateDateHere()

	dokument = ThisComponent
	vyber = dokument.currentselection	
	list = dokument.sheets(vyber.rangeaddress.sheet)

	radek = vyber.rangeaddress.startrow
	sloupec = vyber.rangeaddress.startcolumn
	
	bunka = list.getcellbyposition(sloupec-1, radek )
	bunka.Value = TIME() 'tohle je vkladání vlastního času
	bunka.NumberFormat = 41 'Takhle je formát pro čas HH:MM:SS
	
End Function

     Takže tato funkce už vkládá čas a ne datum - ovšem je to formát který jste chtěl napasovat na "datum" - to by jste se divil co to dělá když by tam zůstala funkce DATE(). Měl byste ale vědět co opravdu chcete.

Editoval neutr (9. 6. 2017 08:22:18)


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

Offline

#15 9. 6. 2017 08:23:15

Tajnejdrop
Člen
Registrace: 26. 5. 2017
Příspěvků: 10

Re: Aktuální datum - Vyřešno

Tohle sem právě taky zkoušel, a sice mi to vyhodí už jen čistě čas, ale výsledek je 00:00:00

Offline

#16 9. 6. 2017 08:24:32

Tajnejdrop
Člen
Registrace: 26. 5. 2017
Příspěvků: 10

Re: Aktuální datum - Vyřešno

Já právě ze začátku chtěl jen datum, ale pak sem si řekl že by se mohl v jiné bunce zobrazovat i čas a potom podle času odvodit jestli to bylo ranní nebo noční směna.

Offline

#17 9. 6. 2017 08:32:47

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

Re: Aktuální datum - Vyřešno

Ano máte pravdu - udělal jsem chybu - takhle je to správně :

Function CreateDateHere()

	dokument = ThisComponent
	vyber = dokument.currentselection	
	list = dokument.sheets(vyber.rangeaddress.sheet)

	radek = vyber.rangeaddress.startrow
	sloupec = vyber.rangeaddress.startcolumn
	
	bunka = list.getcellbyposition(sloupec-1, radek )
	bunka.string = TIME 'tohle je vkladání vlastního času
	bunka.NumberFormat = 41 'Takhle je formát pro čas HH:MM:SS
	
End Function

     Omlouvám se já to prve netestoval. Teď už ano. I Když by se ta funkce měla přejmenovat na CreateTimeHere - ale Vám je to asi celkem jedno. Přes to si to raději přepište. Název říká "uděláme datum zde" a když dělá čas tak lže :-)

Editoval neutr (9. 6. 2017 08:35:30)


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

Offline

#18 9. 6. 2017 08:53:23

Tajnejdrop
Člen
Registrace: 26. 5. 2017
Příspěvků: 10

Re: Aktuální datum - Vyřešno

Jo string big_smile To sem si říkal že bude hloupost, ale ono bum big_smile Díky moc.

Offline

Zápatí