Scrie cifre cu virgula in celule.

Moga Marcel
Mesaje: 52
Membru din: Mar Mar 04, 2014 8:03 am

Scrie cifre cu virgula in celule.

Mesaj de Moga Marcel » Sâm Aug 12, 2017 4:54 pm

Buna ziua,
Stie cineva un macro care sa nu ma lase sa scriu in
celula doar cifre si daca am zecimale separatorul sa fie virgula.
Va multumesc.

TudyBTH
Moderator
Moderator
Mesaje: 993
Membru din: Joi Feb 11, 2016 2:12 pm
Localitate: Cluj Napoca

Re: Scrie cifre cu virgula in celule.

Mesaj de TudyBTH » Sâm Aug 12, 2017 7:13 pm

Buna,

In ceea ce priveste introducerea unei valori numerice puteti folosi o secventa de genul:

Cod: Selectaţi tot

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rCell As Range
    
    Set rCell = Range("InputCell")
    If Intersect(Target, rCell) Is Nothing Then GoTo out
    
    If Not IsNumeric(rCell.Value) Then
        MsgBox "Introduceti o valoare numerica"
        rCell.ClearContents: rCell.Select
    End If
out:
    Set rCell = Nothing
End Sub
In lipsa altor amanunte despre situatia concreta pe care trebuie sa o rezolvati, nu-mi ramane decat sa va amintesc ca acest lucru se poate rezolva si fara VBA, prin Data Validation.

In ceea ce priveste introducerea numerelor zecimale cu separatorul virgula, aici lucrurile sunt mai complicate. In primul rand, depinde de setarile facute pe dispozitivul in care deschideti fisierul. Daca separatorul zecimat setat este punctul, nu veti putea introduce (in celula) valori zecimale cu separator virgula. Introducerea valorii 3,14 de exemplu va fi interpretata ca text.
Depinde deci de felul in care veti folosi mai departe valorile introduse.
Am invatat sa inotam in apa, ca pestii
Am invatat sa zburam in aer, ca pasarile
A ramas doar sa invatam sa traim pe Pamant, ca Oamenii.

Moga Marcel
Mesaje: 52
Membru din: Mar Mar 04, 2014 8:03 am

Re: Scrie cifre cu virgula in celule.

Mesaj de Moga Marcel » Sâm Aug 12, 2017 9:25 pm

Buna,
Am un registru de casa si in rubrica de incasari am introdus din greseala
200.20 in loc de 200,20. Calculele nu s-au facut corect si inregistrarea s-a facut in baza de date.
Mi-a luat mult timp sa imi dau seama ce sa intamplat.
As dori ca pe viitor sa elimin asemenea greseli.
Mentionez ca excelul este setat pt. lb. Romana si are separatorul de zecimale virgula.
Orice varianta este buna.

Eu am incercat cu:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cell As Range
If Not Intersect(Range("D2:E25"), Target) Is Nothing Then
For Each Cell In Intersect(Range("D2:E25"), Target)
If Cell.Value Like "*[!,]*" Then
MsgBox "Separatorul de zecimale este Virgula!"
Cell.Select: Cell.ClearContents
End If
Next
End If
End Sub

Nu functioneaza, la mine.
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

TudyBTH
Moderator
Moderator
Mesaje: 993
Membru din: Joi Feb 11, 2016 2:12 pm
Localitate: Cluj Napoca

Re: Scrie cifre cu virgula in celule.

Mesaj de TudyBTH » Sâm Aug 12, 2017 9:41 pm

Intr-un astfel de format nu se vor introduce niciodata valori negative.
Deci puteti rezolva problema mult mai simplu cu Data Validation
Capture.JPG
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.
Am invatat sa inotam in apa, ca pestii
Am invatat sa zburam in aer, ca pasarile
A ramas doar sa invatam sa traim pe Pamant, ca Oamenii.

Moga Marcel
Mesaje: 52
Membru din: Mar Mar 04, 2014 8:03 am

Re: Scrie cifre cu virgula in celule.

Mesaj de Moga Marcel » Dum Aug 13, 2017 7:54 am

Buna,
Am nevoie si de valori negative.
In cazul in care se produce o greseala la introducerea datelor,
atunci se corecteaza cu valori negative.
De ex. "inregistrat gresit in data de 01.01.2000", iar la incasari treci "-100,22."

TudyBTH
Moderator
Moderator
Mesaje: 993
Membru din: Joi Feb 11, 2016 2:12 pm
Localitate: Cluj Napoca

Re: Scrie cifre cu virgula in celule.

Mesaj de TudyBTH » Dum Aug 13, 2017 9:44 am

In cazul acesta folositi functia ISNUMBER in Data Validation
Capture.JPG
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.
Am invatat sa inotam in apa, ca pestii
Am invatat sa zburam in aer, ca pasarile
A ramas doar sa invatam sa traim pe Pamant, ca Oamenii.

Moga Marcel
Mesaje: 52
Membru din: Mar Mar 04, 2014 8:03 am

Re: Scrie cifre cu virgula in celule.

Mesaj de Moga Marcel » Dum Aug 13, 2017 1:23 pm

Am observat ca atunci cand introduc anumite numere
se intampla ceva ciudat.
De ex.:
introduc si afiseaza
22.222 22.222,00
2.22 44.593,00
22.2 42.788,00
De ca se intampla asta?
Daca introduc 22.22 este ok, apare mesajul de eroare.

TudyBTH
Moderator
Moderator
Mesaje: 993
Membru din: Joi Feb 11, 2016 2:12 pm
Localitate: Cluj Napoca

Re: Scrie cifre cu virgula in celule.

Mesaj de TudyBTH » Dum Aug 13, 2017 4:42 pm

Asa cum am mai spus, caracterul folosit pentru separator zecimal depinde de setarile regionale folosite pe calculatorul in care se deschide fisierul.
Prezenta (sau absenta) separatorului miilor este definita de formatrea aplicata celulelor respective. La fel si numarul de zecimale afisate. Acestea nu afecteaza valoarea introdusa, ci doar modul in care aceasta valoare este afisata in celula.
Am invatat sa inotam in apa, ca pestii
Am invatat sa zburam in aer, ca pasarile
A ramas doar sa invatam sa traim pe Pamant, ca Oamenii.

Moga Marcel
Mesaje: 52
Membru din: Mar Mar 04, 2014 8:03 am

Re: Scrie cifre cu virgula in celule.

Mesaj de Moga Marcel » Lun Aug 14, 2017 9:29 am

Am inteles ca separatorul este setat in functie de setarile regionale folosite pe calculator.
La mine este lb. Romana.
Am totusi o nelamurire cand introduc intr-o celula de ex. 8.8 imi afiseaza 08.aug,
iar in bara de sus "08.08.2017" si formatarea celulei trece la "particularizat".
Se poate face sa ramana afisat ceea ce tastez?

Va multumesc pentru ajutor.
Cu stima, Marcel.

IPP
Moderator
Moderator
Mesaje: 4196
Membru din: Mie Iul 29, 2009 7:26 am
Localitate: Cluj-Napoca

Re: Scrie cifre cu virgula in celule.

Mesaj de IPP » Lun Aug 14, 2017 9:57 am

Buna ziua

Situatii de acest gen se regasesc uneori si la deschiderea in Excel (cu setari regionale romanesti) a unui fisier text ce fusese exportat de pe un Excel cu setari regionale USA.

Daca aveti setari regionale romanesti, unde separatorul zecimal este virgula, folosind punctul excel considera ca nu doriti sa scrieti un numar cu zecimale ci o data calendaristica sau, in alte cazuri o informatie de tip text.

Din punctul meu de vedere singura varianta buna (vizavi si de ceea ce ati mai scris la acest subiect) este ca operatorul, atunci cand are de scris numere cu zecimale sa foloseasca simbolul zecimal de pe tastatura numerica, Excel introducand corect acest separator in functie de setarile regionale existente pe acel calculator.

Daca doriti ca 8.8 sa ramana ca atare (in conditiile expuse mai sus acest lucru inseamna o informatie de tip text, nu un numar cu o zecimala), atunci inainte de a scrie acea informatie scrieti un apostrof: '8.8

IP

Închis

Înapoi la “Visual Basic for Application (VBA) cu Excel - Intrebari tehnice”