• 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.

Combobox: tekst converteren naar getal

Status
Niet open voor verdere reacties.

Harry Veen

Gebruiker
Lid geworden
28 mei 2008
Berichten
31
Via een combobox wordt een percentage uit Excel ingelezen. Bij het retourneren wordt dit percentage als tekst weergegeven.
Ook een door mij in de combobox (tekstbox) ingevuld bedrag wordt in Excel als tekst weergegeven.

Hoe kan ik binnen VBA deze waarden (percentage en getal) converteren naar de juiste opmaak.

Alvast bedankt.
 
Opmaken doe je in Excel (celeigenschappen).

Waarden wegschrijven:

Range("E12")=Val(combobox1.value)
of
Range("E12")=format(combobox1.value,"0")
 
Laatst bewerkt:
Beste SBN,

Je bent je titel meer dan waard.

Probleem verholpen.

Bedankt,

Harry
 
Combobox: waarden als tekst

Beste SBN,

De code achter de textbox in mijn UserFormv is de volgende

Cells(NextRow, 3).Value = Format(FormNewArticle.TXTStPr.Value, "0.00")

Op gehele getallen (bijvoorbeeld 100) werkt deze code. In het Excel werkboek komt keurig het bedrag in de aangegeven cel. Deze cel is via celeigenschappen (financieel, euro) opgemaakt. De uitkomst in Excel is € 100,00

Als ik echter cijfers achter de komma, bijvoorbeeld 0,30 weergeef in de tekstbox van de UserForm dan wordt deze waarde in Excel nog steeds als tekst weergegeven. De uitkomst in Excel is 0,30 (waarschuwingsboxje rechtsboven de cel: de waarde is tekst).

Ik heb in mijn code nergens integers gedeclareerd.

Wat doe ik fout?
 
Als in het tekstvak een punt staat als decimaalscheidingsteken, gaat het mis; met een komma kan ik het probleem niet reproduceren.
 
Er wordt een komma als decimaalscheidingsteken gebruikt in de TextBox, maar toch gaat het fout bij decimalen.

test7 en test 8 waren ronde bedragen, dus keurig in euro opmaak
test 9 en test 10 waren decimalen en dan opmaak tekst.


Hieronder de uitkomsten uit Excel, alle waarden zijn gevuld via de UserForm.

code omschrijv. tarief 1 tarief2 perc.
test7 sfsfjs;ldfj € 100,00 0%
test8 sfjs;kdfj;slkfj;kl € 75,00 19%
test9 sfjs;ljfdsj 0,30 19%
tst10 sfsdfjs;fj 0,50 19%
 
Hier een voorbeeldbestandje.

Als een bedrag wordt ingevuld met een decimaal, dan wordt deze, afhankelijk van de notatie in de code, of afgerond of geplaatst als tekst.

De bedoeling is dat niet wordt afgerond en niet als tekst wordt geplaatst.

Wat zit er fout in de notatie?
 

Bijlagen

Macro genereert vervolgens onderstaande code.

Range("A10").Select
ActiveCell.FormulaR1C1 = "0.3"
Range("A11").Select

Je begrijpt het probleem.
 
Probeer eens:
Code:
Range("a10").Value = CDbl(Format(UserForm1.TextBox1.Value, "0.00"))
Dit lijkt in cel A10 het verwachtte resultaat te geven.
 

Bijlagen

Code:
Private Sub CommandButton1_Click()
    Hide
    With Sheets("blad1")
        For j = 1 To 3
            Cells(j + 9, 1) = TextBox1.Text * 1
            Cells(j + 13, 1) = TextBox2.Text * 1
        Next
    End With
End Sub
 
Probeer eens:
Code:
Range("a10").Value = CDbl(Format(UserForm1.TextBox1.Value, "0.00"))
Dit lijkt in cel A10 het verwachtte resultaat te geven.

Dankje Wher,

code CDbl werkt,ook al heb ik geen idee waar het voor staat. Ik heb deze oplossing geprobeerd bij de percentage, maar dit geen een fout.

Is er iemand die een soortgelijke code kent, maar dan voor percentage?
 
Code:
Private Sub CommandButton1_Click()
    Hide
    With Sheets("blad1")
        For j = 1 To 3
            Cells(j + 9, 1) = TextBox1.Text * 1
            Cells(j + 13, 1) = TextBox2.Text * 1
        Next
    End With
End Sub

Dank je SNB,

Code werkt, maar haalt de opmaak wel uit cellen. Dit is dan weer op te lossen door de opmaak op de kolommen opnieuw op te nemen in de code.
 
CDbl = Convert to double, CInt = Convert to integer dacht ik.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan