format data uk dd-mm-yyyy
Last Updated: Nov 18 2010 18:40, Started by
credit
, Nov 18 2010 11:57
·
0
#1
Posted 18 November 2010 - 11:57
Am facut o forma in vba sub word. In forma exista un textbox1 si un buton.
Codurile sunt: Private Sub CommandButton1_Click() MsgBox DateAdd("d", 10, TextBox1.Text) End Sub Private Sub UserForm_load() TextBox1.Text = Format(TextBox1.Text, "dd-mm-yyyy") End Sub Introduc in textbox1 valoarea 01-01-2010 Problema este urmatoarea. Cand apas butonul imi apare mesajul cu data de 01-11-2010. (este tot in format US; mm-dd-yyyy). Cum sa fac sa imi afiseze 11-01-2010 (format UK)? Am observat ca daca sterg codul pentru userform_load nu se schimba nimic. Mesajul care imi apare este tot de tip US, practic nu si-a luat formatarea... Edited by credit, 18 November 2010 - 11:58. |
#2
Posted 18 November 2010 - 12:02
Ca in poza atasata?
L.E. Am gresit. Scuze Edited by Sandstorm, 18 November 2010 - 12:03. |
#4
Posted 18 November 2010 - 12:07
#5
Posted 18 November 2010 - 12:09
#7
Posted 18 November 2010 - 12:17
Daca nu stiam ce e format nu mai scriam codul. Acu sunt la servici si nu am acces la time settings, ca poate mergea daca faceam niste modificari acolo. Incercam cu vblongdate (sa-si ia formatul din regional settings).
|
#8
Posted 18 November 2010 - 12:48
Pune asa:
Private Sub CommandButton1_Click() MsgBox Format(DateAdd("d", 10, TextBox1.Value), "dd-mm-yyyy") End Sub |
#9
Posted 18 November 2010 - 13:00
Bai frate esti tare! Mersi mult
Eu cautam cai complicate |
#10
Posted 18 November 2010 - 13:15
Sandstorm, on 18th November 2010, 13:13, said: 1. Usor cu huo ca nu ne tragem de sirete Nu te aprinde de la Huooo. N-a fost dintr-ala de pe stadion ci unul "dulce", prietenesc. Daca e cazul imi cer scuze. Ideea era ca te-ai grabit sa raspunzi si eu vroiam raspunsul celui care a pus intrebarea. De ce? Pentru ca vreau sa vad ce gandeste si cum gandeste (daca). Sandstorm, on 18th November 2010, 13:13, said: 2. Format Tot la raspunsul meu ajungi, chiar daca nu e ca la carte (aproximativ) Hai s-o luam pas cu pas. 1. VB/VBA inghite multe. Adica poti avea: strValue="2" intValue=3 strValue=strValue + intValue print strValue '(ce afiseaza?) Toate "jongleriile" astea cu tipurile de date sunt bune dar si rele in acelasi timp. Bune atunci cand stii exact ce faci si ce vei obtine. Rele pentru ca 1. ai impresia ca poti face ce vrei; 2. pentru ca iti corecteaza niste greseli fara sa te anunte/invete (foarte rau). 2. Functia FORMAT: "In Excel, the Format function takes an expression and returns it as a formatted string." Da? Adica iti afecteaza numai ce vezi (evident ca daca pui rezultatul intr-un string, atunci il si poti folosi mai departe) si-ti returneaza un string. Daca vrei poate fi privita si ca o functie de conversie. Dar in nici un caz nu-ti afecteaza/modifica, nici macar temporar, regional settings. 3. DateAdd. "In Excel, the DateAdd function returns a date " Adica iti returneaza ceva de tipul DATE si nu STRING. Mai mult, al 3-lea parametru e tot de tipul DATE(*vezi mai jos) pe cand TExtBox.Text e STRING. Iar data ... well .. e in formatul sistemului. 4. Incheiere: 4.1. Apropos de acel al 3-lea parametru care e tot de tipul DATE. VB/VBA face automat conversia de la STRING la DATE. Si partea proasta e ca o face asa cum poate si fara a te informa ca ceva i se pare in neregula acolo: daca stringul respectiv transformat la data, in formatul sistemului, nu este o data valida, dar totusi aplicand un alt format se obtine o data valida, atunci o va prelua pe aceasta. Daca nu ma crezi incearca ceva de genu (in cazul lui regional settings sunt pentru US, adica ll-zz-aaaa, iar data initiala este in format zz-ll-aaaa): - 02-10-2010 + 10 zile => 02-20-2010 (20 febr) - 15-01-2010 + 10 zile => 01-25-2010 (15 ian) LA fel procedeaza si pentru rezultat, doar ca este in sens invers: de la DATE la STRING. 4.2. (Solutia) Daca vrei sa-ti afiseze intr-un anumit format, diferit de cel al sistemul, dupa apasarea butonului (adica dupa apelarea oricarei functii care "lucreaza" cu DATE), atunci trebuie sa apelezi si FORMAT: MsgBox Format(DateAdd("d", 10, data_ta), formatul_dorit) Edited by bgMiKe, 18 November 2010 - 13:16. |
|
#11
Posted 18 November 2010 - 13:36
Ai dreptate, nu contrazic cele de mai sus, dar atata timp cat ce vroia el nu este pentru excel sau pentru parte de calcule, poate sa o intoarca cum vrea.
In Excel inteleg sa se aplice ce este mai sus, dar atata timp cat el vroia mai mult sa i se afiseze o valoare pe care nu o va folosi intr-un calcul poate sa foloseasca Format si atat. Pt. faza cu huo, nu-i bai. Ma mai grabesc si eu si inteleg altceva Edited by Sandstorm, 18 November 2010 - 13:38. |
#12
Posted 18 November 2010 - 14:15
Private Sub CommandButton1_Click() MsgBox Format(DateAdd("d", 10, TextBox1.Value), "dd-mm-yyyy") End Sub Se pare ca nu functioneaza corect codul. Pentru data de 01-01-2010 obtin corect 11-01-2010 dar pentru alte date de exemplu pentru 01-02-2010 obtin 12-01-2010 (deci complet aiurea) |
#13
Posted 18 November 2010 - 14:26
Mie unul imi merge bine:
- 01-01.2010 => 11-01-2010 (poza 1) - 01-02-2010 => 11-02-2010 (poza 2) |
#14
Posted 18 November 2010 - 14:28
Trimite-mi si mie te rog fisierul. Ia uita-te la time settings la tine in pc, cum ai formatul? vezi la ceas in icon tray. Eu am de tipul "mm/dd/yyyy". Tu cred ca esti pe sistemul UK cu "dd/mm/yyyy". VBA-ul ia setarile de data implicit din time settings.
Vezi daca e adevarat ce spun.. Edited by credit, 18 November 2010 - 14:31. |
#16
Posted 18 November 2010 - 14:40
Da am verificat, nu merge. Te-ai uitat la setarile din regional settings sa vezi ce format de data are pc-ul tau? cred ca esti pe UK de aia merge la tine si la mine nu.
|
#17
Posted 18 November 2010 - 14:42
Eu-s pe romana cu toate setarile regionale.
Edited by Sandstorm, 18 November 2010 - 14:59. |
#18
Posted 18 November 2010 - 14:43
Da de acolo este, am putut sa fac modificarea in regional settings sa dau pe sistemul UK si vad ca merge.
Mersi mult. |
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users