Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Wc Geberit

Routere detinute in trecut si in ...

Teii din fața casei

E-Mail in serie prin Excel si Out...
 Modul alimentare rulou/jaluzea ex...

Recuperare fișiere dupa form...

Aplicatii stress test RAM

Asigurare auto hibrid
 Asus B550M - PC-ul nu porneste di...

Tzanca Uraganu - Inconjurat de Fe...

explicatie montaj breadboard

3 Doors Down - Kryptonite
 Semnalizati cand virati pe un dru...

Succesiune - mostenire apartament...

Donez Siofor de 1000mg ( diabet t...

Izolatie intre parter si etaj
 

format data uk dd-mm-yyyy

- - - - -
  • Please log in to reply
27 replies to this topic

#1
credit

credit

    Member

  • Grup: Members
  • Posts: 621
  • Înscris: 04.05.2007
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
Sandstorm

Sandstorm

    Member

  • Grup: Banned
  • Posts: 632
  • Înscris: 30.04.2009
Ca in poza atasata?

L.E. Am gresit. Scuze :D

Edited by Sandstorm, 18 November 2010 - 12:03.


#3
bgMiKe

bgMiKe

    Junior Member

  • Grup: Members
  • Posts: 149
  • Înscris: 28.01.2006
1. Ce face functia FORMAT?

#4
Sandstorm

Sandstorm

    Member

  • Grup: Banned
  • Posts: 632
  • Înscris: 30.04.2009

View PostbgMiKe, on 18th November 2010, 12:05, said:

1. Ce face functia FORMAT?
Stabileste formatarea acelui textbox.

#5
bgMiKe

bgMiKe

    Junior Member

  • Grup: Members
  • Posts: 149
  • Înscris: 28.01.2006
Huoooo, nu era pentru tine intrebarea :)

View PostSandstorm, on 18th November 2010, 13:07, said:

Stabileste formatarea acelui textbox.

PS pentru tine: mai incearca o data.

#6
Sandstorm

Sandstorm

    Member

  • Grup: Banned
  • Posts: 632
  • Înscris: 30.04.2009
1. Usor cu huo ca nu ne tragem de sirete :)
2. Format
Tot la raspunsul meu ajungi, chiar daca nu e ca la carte :) (aproximativ)

Edited by Sandstorm, 18 November 2010 - 12:15.


#7
credit

credit

    Member

  • Grup: Members
  • Posts: 621
  • Înscris: 04.05.2007
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
Sandstorm

Sandstorm

    Member

  • Grup: Banned
  • Posts: 632
  • Înscris: 30.04.2009
Pune asa:
Private Sub CommandButton1_Click()
	MsgBox Format(DateAdd("d", 10, TextBox1.Value), "dd-mm-yyyy")
End Sub


#9
credit

credit

    Member

  • Grup: Members
  • Posts: 621
  • Înscris: 04.05.2007
Bai frate esti tare! Mersi mult
Eu cautam cai complicate :thumbup:

#10
bgMiKe

bgMiKe

    Junior Member

  • Grup: Members
  • Posts: 149
  • Înscris: 28.01.2006

View PostSandstorm, 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).

View PostSandstorm, on 18th November 2010, 13:13, said:

2. Format
Tot la raspunsul meu ajungi, chiar daca nu e ca la carte :) (aproximativ)
Nu. Nu ajung la raspunsul tau.

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
Sandstorm

Sandstorm

    Member

  • Grup: Banned
  • Posts: 632
  • Înscris: 30.04.2009
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 :D

Edited by Sandstorm, 18 November 2010 - 13:38.


#12
credit

credit

    Member

  • Grup: Members
  • Posts: 621
  • Înscris: 04.05.2007
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
Sandstorm

Sandstorm

    Member

  • Grup: Banned
  • Posts: 632
  • Înscris: 30.04.2009
Mie unul imi merge bine:
- 01-01.2010 => 11-01-2010 (poza 1)
- 01-02-2010 => 11-02-2010 (poza 2)

#14
credit

credit

    Member

  • Grup: Members
  • Posts: 621
  • Înscris: 04.05.2007
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.


#15
Sandstorm

Sandstorm

    Member

  • Grup: Banned
  • Posts: 632
  • Înscris: 30.04.2009
Uite-l.

#16
credit

credit

    Member

  • Grup: Members
  • Posts: 621
  • Înscris: 04.05.2007
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
Sandstorm

Sandstorm

    Member

  • Grup: Banned
  • Posts: 632
  • Înscris: 30.04.2009
Eu-s pe romana cu toate setarile regionale.

Edited by Sandstorm, 18 November 2010 - 14:59.


#18
credit

credit

    Member

  • Grup: Members
  • Posts: 621
  • Înscris: 04.05.2007
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

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate