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

TextBox valuta

Status
Niet open voor verdere reacties.

Norman Scheuter

Gebruiker
Lid geworden
30 sep 2008
Berichten
124
Hallo,

Ik heb een blad waar ik diverse Textboxen heb zitten, die gevuld worden door een cel uit een werkblad.
Deze waarde zou een bedrag moeten worden met 2 cijfers achter de komma, bijv. € 5,00

Hoe kan ik de eigenschappen van een Textbox veranderen in een Valuta.
Ik zit niet in een userform, heb een aantal Texboxen toegevoegd vanuit ontwerpmodus.
Dit heb ik gedaan omdat de kolommen in Excel allemaal in breedte verschillen en de Textboxen gewoon in een eigen breedte geplaatst kunnen worden.

Onderstaande vba codes heb ik geprobeerd, zonder succes.

Code:
Private sub textbox1_AfterUpdate()
    textbox1 = format(textbox1, "$#,##0.00")
end sub

Code:
Private Sub TextBox1_Change()
    TextBox1.Value = Format(TextBox1.Value, "$#,##0.00")
End Sub

Code:
Private Sub TextBox1_Change()    
  If TextBox1 = vbNullString Then Exit Sub    
  If IsNumeric(TextBox1) Then CurrencyTransform(TextBox1)
End Sub

Ik hoop dat iemand me verder kan helpen.

Mvg. Norman
 
Code:
= Format(TextBox1.Value, [COLOR=#ff0000]"currency"[/COLOR])
Kan ook.

Edit: was een aanvulling op @edmoor.
 
Laatst bewerkt:
Ik had m'n bericht alweer verwijderd wegens een storend foutje ;)

Het kan niet tijdens het intikken.
Test dit eens:
Code:
Dim Tbx1_d As Double

Private Sub TextBox1_GotFocus()
    TextBox1.Value = Tbx1_d
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case Chr(KeyAscii)
        Case 0 To 9
        Case ","
        Case ".":    KeyAscii = 44
        Case Else
            KeyAscii = 0
    End Select
End Sub

Private Sub TextBox1_LostFocus()
    Tbx1_d = TextBox1.Value
    TextBox1.Text = Format(TextBox1.Value, "currency")
End Sub
Vul iets in de tekstbox en en klik daarna op een cel om de tekstbox te verlaten.

Als je de tekstbox alleen maar vanuit cel vult, bijvoorbeeld uit A1 dan is dit achter het werkblad voldoende in de Worksheet_Change:
Code:
If Target.Address(0,0) = "A1" Then TextBox1.Text = Format(Range("A1").Value, "currency")
En dan dit om te voorkomen dat men zelf iets in de tekstbox intikt:
Code:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    KeyAscii = 0
End Sub
 
Laatst bewerkt:
Hoi Edmoor en HSV,

Ik heb deze code nu in mijn blad.

Code:
Private Sub TextBox1_Change()
    TextBox1.Value = Format(TextBox1.Value, "currency")
End Sub
Sub TextBox2_Change()
    TextBox1.Text = CStr(Range("A1").Value)
    End Sub

De een zorgt er voor dat de textbox wordt gevuld met de waarde uit cel A1 en de andere maakt er netjes een geldbedrag van.
Maar dit doet ie alleen als ik door de VBA loop.
Ik kan dit doen door een change in het werkblad, maar dan blijft hij in een loop hangen, omdat hij elke wijziging ziet als eenwijziging en dus maar door blijft gaan.

Hoe kan ik dat oplossen.

Gr. Norman


Gr. Norman
 
Start de Sub in het werkblad met Application.EnableEvents = False
Aan het einde zet je dat weer op True.
 
Laatst bewerkt:
Hoi Edmoor,

We hebben het zo opgelost.

Code:
Private Sub sextBox1_Change()
        TextBox1.Text = CStr(Range("A1").Value)
        TextBox1.Value = Format(TextBox1.Value, "currency")
    End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        Call sextBox1_Change
    End If
End Sub

Maar jouw oplossing kende ik ook niet ... altijd handig :)

Gr. Norman
 
14 jaar lid en nog altijd iets vragen zonder voorbeeld bestand?
 
Excuseer emields,

Volgens mij was mijn vraag en uitleg duidelijk genoeg.
Heb van Edmoor en HSV een duidelijke uitleg gekregen waar ik op verder kon denken.

Gr. Norman
 
Een textbox is een textbox en bevat alleen maar tekst. Daar valt niets aan te veranderen.
De inhoud van een tekstvak kan een getal of een datum lijken, doch is dat niet.

Als je wil automatiseren probeer het dan met zo min mogelijk omwegen te doen.
Jouw 'oplossing' voldoet daar in ieder geval niet aan.

Dit is voldoende:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$A$1" Then TextBox1 = Format(Target, "currency")
End Sub
 
Hoi Snb,

Super, deze werk inderdaad en is ook veel korter...beter.:D
Dank je wel:thumb:

Gr. Norman
 
Zoals ook genoemd in #3.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan