Stránka 1 z 1
Excel - Datum ve formuláři
Napsal: 04 dub 2013 10:47
od Dayweek
Zdravím,
vytvořil jsem pomocí předlohy z jednoho fóra následující file s formulářem.
Jde mi o to, aby datum se mohl zadávat pouze jako datum a ne jako text.
Microsoft Date and Time Picker nelze použít (zkoušel jsem doinstalovat, zaregistrovat - bez úspěchu). Existuje nějaké jiné řešení?
Děkuji.
Re: Excel - Datum ve formuláři
Napsal: 04 dub 2013 12:44
od Jjg
Můžete správné zadání data ve formuláři kontrolovat VBA fukcí IsDate.
Doplnění:
Asi jsem správně nepochopil, nač jste se tázal. Takže dotazu:
1. Ve sloupci datum v listě nastavte formát data, jaký si přejete.
2. Upravte kód pro zápis datumu
Původně: .Cells(r, 1) = txtDatum
Nově:
Dim d As Date
d = txtDatum
.Cells(r, 1) = d
Případně nemusíte předem formátovat sloupec datum na listě a pro každý nový záznam provést formátování z kódu pro příslušný řádek.
Re: Excel - Datum ve formuláři
Napsal: 04 dub 2013 13:37
od Dayweek
Odzkoušeno - funguje - děkuji.
Pro zobrazování formátu dd.mm.rrrr jsem musel naformátovat sloupec na listě. Bez toho by to ukazovalo formát d.m.rrrr.
Lze ještě nějak vyřešit, aby se na formuláři dal zapisovat pouze datum (tedy ne text)? Když nyní zadám místo data text, tak to pouze hodí při uložení chybnou hlášku ("Runtime-Error ´13´ Type mismatch - laik z toho nevyčte, co je špatně).
Děkuji
Re: Excel - Datum ve formuláři
Napsal: 04 dub 2013 13:56
od guest
Drobná inspirace:
http://excelplus.net/news.php?readmore=85Jinak čistě teoreticky: Textové pole se tak původně jmenuje proto, že se vším pracuje jako s textem a zbytek je o to poradit si s konverzí číslo-text a list-formulář. VBA obsahuje ty původní prvky (cca 13 let staré) bez nějaké zvláštní inteligence. Není to VB.NET, ani třeba InfoPath, kde už jsou ty možnosti alespoň o špetku jinde.
Re: Excel - Datum ve formuláři Vyřešeno
Napsal: 04 dub 2013 15:20
od Jjg
Ve Vašem případě v principu třeba takto (rozšíření úpravy části kódu) s využitím funkce IsDate:
With wsh
Dim d As Date
If IsDate(txtDatum) = False Then
MsgBox "Chyba ve formátu data, vložte znovu!"
Exit Sub
Else
d = txtDatum
.Cells(r, 1) = d
.Cells(r, 2) = txtJmeno
.Cells(r, 3) = txtPracoviste
.Cells(r, 4) = txtDruh
.Cells(r, 5) = txtSkoda
.Cells(r, 6) = txtVyskyt
.Cells(r, 7) = txtPopis
.Cells(r,

= txtKonzultace
.Cells(r, 9) = txtVyreseno
End If
End With
Není striktně vyžadováno užívat jen funkci IsDate, viz např. rada kolegy výše. IsDate propustí např zadání "1 září 2012" - tj. zrovna v textové formě.
Re: Excel - Datum ve formuláři
Napsal: 05 dub 2013 13:58
od guest
Tak na datum já mám zpracovaný TextBox i doslova znak po znaku, nicméně IsDate pro kontrolu stačí. Ano, pustí i neúplné zapisy. ono, když půjdeme do důsledku, tak ideální je nabídnout kalendář u textového pole pěkně po ruce.
Re: Excel - Datum ve formuláři
Napsal: 05 dub 2013 14:09
od Dayweek
Děkuji Jigovi... tohle mi úplně stačí.