Getal naar tekst converteren met VBA met weergave 2 decimalen

Status
Niet open voor verdere reacties.

MUMSEL

Gebruiker
Lid geworden
23 apr 2020
Berichten
7
Hallo allen,

Ik heb een tabel welke ik gebruik voor een Many to One mailmerge volgens de Add-inn van Graham Mayor.

De getallen moeten hierin geconverteerd worden naar tekst. Het nadeel is hiervan dat er geen duizendtallen worden weergegeven en geen 2 decimalen (bv. bij een rond getal, of bij een getal met maar 1 decimaal.
Op de website van Graham Mayor adviseert hij de getallen naar tekst te converteren mbv de volgende macro:

Code:
Sub ConvertFormattedNumbersToText()
Dim oRng As Range, sText As String
For Each oRng In Selection
If Not oRng.HasFormula Then
sText = oRng.Text
oRng.NumberFormat = "@"
oRng.Value = sText
End If
Next oRng
lbl_Exit:
Exit Sub
End Sub

Kan deze macro zo aangepast worden, zodat de getallen als tekst met 2 decimalen en duizendtallen weergegeven worden? Ik 'steel' wel eens een VBA-script om te gebruiken, maar inhoudelijk heb ik er geen kaas van gegeten.

NB. De Excel formule
PHP:
=TEKST(C2;"#.##0,00")
kan niet gebruikt worden, omdat er in de gehele tabel geen # mogen voorkomen.

Alvast bedankt voor het meedenken!
 
Plaats een voorbeeld document met verwacht resultaat.
 
Laatst bewerkt:
NB. De Excel formule
PHP:
=TEKST(C2;"#.##0,00")
kan niet gebruikt worden, omdat er in de gehele tabel geen # mogen voorkomen.
Je snapt blijkbaar niet waarvoor die tekens (# en 0) bedoeld zijn. Dat zijn geen letterlijke tekens die je terugziet, maar slechts plaatsbepalers voor de gewenste opmaak. Kun je simpel terugvinden in de Help van Excel. De nul (0) geeft daarbij een verplicht teken aan. Dus voor getallen geef je met de code 0,00 aan dat er altijd twee decimalen te zien zijn, en minstens één cijfer vóór de komma. Het stuk "#.##0" markeert slechts de plaats van het duizendtal teken. Op de plek van het # teken komen cijfers te staan als die er zijn, en niks als er niks is. Meer is het niet. Dus het getal 123,8976 wordt weergegeven als 123,89 en het getal 12345,1234 als 12.345,12.
Zou je de opmaak definiëren als 0.000,00, dan wordt het getal 12,4567 weergegeven als 0.012,45.
Kortom: probeer eerst je formules eens uit, voordat je iets zeg wat niet klopt :).
 
Goedemiddag,

Allereerst een ruis in de communicatie wegnemen. Ik begrijp wel degelijk wat de functie
PHP:
=TEKST(C2;"#.##0,00")
inhoud en heb deze (uiteraard) ook getest. De AddIn geeft bij het mergen een melding dat er in het bronbestand geen # mogen voorkomen, dus ook niet in een formule Dus ik heb niet iets gezegd wat niet klopt :)

Als ik nogmaals test door eerst de
PHP:
=TEKST(C2;"#.##0,00")
te gebruiken en dit te kopieren en plakken geeft ie wel alles juist weer en werkt het OK in mijn mailmerge. TOen ik dit laatst probeerde werkte het niet. Voor nu werkt het, mocht ik de volgende keer problemen hebben, meld ik mij weer.

Bedankt voor jullie snelle reacties!
 
Wellicht heb je de formule in een kolom geplakt die als Tekst is opgemaakt. In dat geval werkt de formule ook niet, en neem je in de merge dus de letterlijke tekst uit de cel over. En ja, dan krijg je #-tekens in de output. En inderdaad: dat mag niet :). Vandaar dat het nu wel werkte, omdat je de formule gebruikt, die een resultaat opleverde.
 
Het resultaat van de formule was zichtbaar, maar omdat de formule met # erin stond deed de Add in het niet, omdat er toch # gelezen werd door de Add in in de tabel. Ik begrijp echt wel hoe een formule in Excel werkt.

De mailmerge werkt niet met een # in de tabel, al is het in een formule, zelfs niet als je de kolom waar een # in staat niet gebruikt in de brief die je genereert.

Toch bedankt voor de reactie.
 
Misschien moet je van de addin afstappen. Ik gebruik de originele code + techniek van Graham, en die werkt prima. Ik heb die adding wel eens bekeken, maar snel aan de kant gegooid. Vond het niks :).
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan