< návrat zpět

MS Excel


Téma: DateDiff a Excel 2013 rss

Zaslal/a 4.12.2013 22:06

Ahoj všichni,
mám jeden vlastně dva zákeřné dotazy
1. Vytvořil jsem si formulář v němž se mi načítal rozdíl dvou dat vložených do textboxů a ten rozdíl se rozdělil na roky a měsíce.
viz níže
---------------------------------------
Dim rok, mesic As Variant
rok = DateDiff("yyyy", datum1, datum2)
mesic = DateDiff("m", datum1, datum2)
textbox.rok = rok
textbox.mesic = mesic - (rok * 12)
----------------------------------------
Vše báječně fungovalo v excelu 2007, teď mám excel 2013 a nefunguje. zkoušel jsem i excel 2010 a taky nic. Nemáte někdo tušení kde je problém?
2. Mám Windows 8 64bit a nezobrazují se mi v excelu knihovny MSCOMCTL.OCX ani MSCOMCT2.OCX. Zaregistrovat se mi je podařilo, ale do excelu se nenačtou.
Prosím o radu a předem děkuji

Zaslat odpověď >

icon #016662
avatar
ad 1.
Problém bude asi v tom, že v tých textboxoch zrejme nemáš dátumy, ale nejaké blbiny, ťažko povedať, bez toho, aby som ten formulár videl. Rozhodne ale funkcia DateDiff v 2010 funguje.

Do buniek A1 a A2 som napísal dátum a kódik dáva správny výsledok:Sub pom()
Debug.Print "rokov: " & DateDiff("YYYY", [a1], [a2])
Debug.Print "mesiacov: " & DateDiff("m", [a1], [a2]) - DateDiff("YYYY", [a1], [a2]) * 12
End Sub
citovat
#016667
avatar
Ten formulář vypadá následovně. Dopsal jsem tam část tvého kódu
DateDiff("m", [a1], [a2]) - DateDiff("YYYY", [a1], [a2]) * 12
na 2013 jsem to ještě nezkoušel, uvidím odpoledne. zatím děkuji za ochotu.
Apropo proč se mi nenačítají objekty z knihovny MSCOMCTL.OCX do toolboxu asi nevíš, viď?
Příloha: zip16667_pokus.zip (20kB, staženo 18x)
citovat
icon #016669
avatar
Pomenovavat prvky formulara ako C11, D1 apod. mi nepride uplne stastne, kazdopadne, mne sa javi, ze tie roky a mesiace to v tom vzore, ktory si poslal, pocita (v excel 2010).

S tymi kniznicami neporadim, tam bude musiet niekto iny.citovat
#016672
avatar
s tím pojmenováním prvků formuláře máš asi pravdu, mám to pojmenováno podle oddílů a položky v něm, aby se mi snadněji pracovalo s uložením a načítáním dat z a do formuláře. Mě totiž vyděsilo, že mi to v excelu 2007 počítalo naprosto bez problémů a pak jsem naistaloval 2013 a přestalo to fungovat. V každém případě ještě jednou děkuji. Až přijdu odpoledne domů, vyzkouším to na těch 2013citovat
#016674
avatar
Tak jsem to vyzkoušel a nefunguje mi to, už mi došly nápady, kde ještě by mohla být chyba :-(citovat
icon #016675
avatar
ti hovorím, že v 2010 to funguje, som si otvoril i ten tvoj formular a roky a dni to pocita.
tu pisu, ze pre 2013 ohladom uvedenej funkcie to same, je v 2013 k dispoziciihttp://www.techonthenet.com/excel/formulas/datediff.phpto sice overit nedokazem, pac 2013 nemam, ale pmn nezmysly na tom webe nepisu..citovat
#016677
avatar
Laboroval jsem s datovými typy a zjistil jsem, že mu, nevím proč, vadí český formát data t.j. 1.1.1900. Změnil jsem ho na 01/01/1900 a to zafungovalo. Takže ještě jednou díky za Tvou podporu a Tvůj čascitovat
#017350
avatar
Nechci nikomu cpát své rady, ale kdyby tento problém náhodou někdo řešil a nevěděl si rady, vyřešil jsem to nakonec takto:

Private Sub UserForm_Initialize()
Dim rok, mesic As Long
'použil jsem operátor "\" pro dělení s celočíselným výsledkem
rok = DateDiff("m", od, datum) \ 12

'a operátor (funkci)Mod pro zbytek po dělení
mesic = DateDiff("m", od, datum) Mod 12

'výsledkem je v mém případě téměř přesné určení odpracovaných roků a měsíců
roku = rok
mesicu = mesic
End Subcitovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje