• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Macro punt naar komma

Status
Niet open voor verdere reacties.

Neocon

Gebruiker
Lid geworden
28 dec 2009
Berichten
57
Goedemorgen,

Ik heb een bestand met een vrij grote marco. 1 van de onderdelen is het veranderen van de punt naar een komma.
Soms worden prijzen als 1,23 genoteerd en soms als 1.23. Deze macro maakt dat uniform en corrigeert alle waarden naar een komma prijs.

In de bijlage heb ik het stuk macro gebruikt in een vereenvoudigd voorbeeld met de volgende waarden:
1,230
1,450
1,600
1,642
1,785
2.54


Als ik bovenstaande cellen selecteer en middels control F vervangen de punt voor de komma vervang wordt alleen de waarde 2.54 veranderd (zoals zou moeten).

Dit is de code:

Range("B3:B8").Select
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

Maar, activeer ik de macro dan worden de celwaarden met 3 decimalen (bijvoorbeeld 1,642) omgezet naar duizendtallen: 1642,00.

Echter zou ik verwachten dat excel niets met deze waarde doet, aangezien er geen punt in deze waarde zit en er dus ook niets vervangen kan worden (net als bij control F vervangen).

Zoals gezegd, in de bijlage staat een voorbeeld bestand.

Iemand enig idee waarom dit mis gaat?
Bedankt!

Groet,
Jeffrey
 

Bijlagen

Zo kan het bijvoorbeeld

Code:
Sub vervang()
For i = 3 To 8
   If InStr(1, Range("B" & i), ".") Then Range("B" & i).Replace ".", ","
Next
End Sub
 
Of:
Code:
For Each cl In Range("B3:B8")
    If InStr(1, cl.Value, ".") > 0 Then cl.Value = cl.Value / 100
Next cl
 
Heel banaal, maar je moet een punt naar een punt invoeren.

Code:
Sub Correctie_punt_naar_komma()
 Range("b3:b8").Replace ".", "."
End Sub
 
Da's wel heel simpel :)
 
Heel banaal, maar je moet een punt naar een punt invoeren.

Code:
Sub Correctie_punt_naar_komma()
 Range("b3:b8").Replace ".", "."
End Sub


Super dit werkt! Bedankt.

Maar ik wil toch ook de achterliggende gedachte begrijpen.
Weet je ook waarom mijn code een output geeft die anders is dan de manier zonder VBA?
En waarom werkt het wel als je een punt naar een punt verandert? Snap niet zo goed waarom er dan ineens een komma verschijnt.
 
Ik zie hier nog geen verklaring beschreven.

In mijn macro verander ik een punt naar een komma.
Maar een bedragen van bijvoorbeeld 1,234 (dus met 3 decimalen) wordt 1234,00.

Als er geen punt in het bedrag staat, moet excel dit bedrag toch ongemoeid laten?

Als het een duizendtal was, had ik het gesnapt, maar dat is het niet.
 
De zoekcriteria is het werkelijke wat je zoekt (de punt).
De replace is ook een punt, en wordt in VBA gezien als een komma.

In feite staat er: vervang de punt door een komma.
 
Ah helder.

Wat vervangen moet worden is een 'harde' waarde, maar hetgeen ervoor in de plaats moet komen is afhankelijk van de taal van VBA en die ziet de punt als een komma.
De oplossing is mij nu helder.

Het enige dat ik dan nog altijd niet begrijp is waarom mijn eerste opzet niet werkte.
Ik vervang de punt (harde waarde) door een komma (punt in VBA taal).
Dus de punt wordt vervangen voor een punt. Maar in 1,234 staat geen punt. Of leest VBA komma's in getallen met 3 decimalen als een duizendtal?
 
Daar lijkt het inderdaad op.
Jij doet de range.replace methode en ik doe de replace functie.

Beide methodes hebben ieder hun eigen parameters.
 
Super dit werkt! Bedankt.

Maar ik wil toch ook de achterliggende gedachte begrijpen.
Weet je ook waarom mijn code een output geeft die anders is dan de manier zonder VBA?
En waarom werkt het wel als je een punt naar een punt verandert? Snap niet zo goed waarom er dan ineens een komma verschijnt.


Heel simpel...... je hebt het over prijzen, oftewel valuta. Zodra je de komma bij $ 1,000 laat vervangen door een punt, komt er logischerwijs 3 nullen bij. Bij € (dus punt vervangen door komma) gaat juist weer 3 nullen eraf.
Of is het nou omgekeerd?

Praktisch voorbeeld
Ik doe de financiële administratie en als standaard worden alle bedragen als € weergegeven; dit komt door configuratie instellingen via Windows.
Ik heb een keer via configuratie de komma vervangen door een punt. Hierdoor werd in de financiële administratie alle bedragen weergegeven mét 3 nullen er bij!
 
Laatst bewerkt:
Heel simpel...... je hebt het over prijzen, oftewel valuta. Zodra je de komma bij $ 1,000 laat vervangen door een punt, komt er logischerwijs 3 nullen bij. Bij € (dus punt vervangen door komma) gaat juist weer 3 nullen eraf.
Of is het nou omgekeerd?

Praktisch voorbeeld
Ik doe de financiële administratie en als standaard worden alle bedragen als € weergegeven; dit komt door configuratie instellingen via Windows.
Ik heb een keer via configuratie de komma vervangen door een punt. Hierdoor werd in de financiële administratie alle bedragen weergegeven mét 3 nullen er bij!

Ik snap je redenatie, maar is zit net wat anders. Ik laat de komma bij 1,000 niet vervangen door een punt.
Ik laat de punt vervangen door een komma. Dus in theorie zou die komma in 1,000 niet veranderd moeten worden. Maar het resultaat is 1.000.
Dus net contra van wat je zou verwachten :-)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan