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

getalnotatie in een textbox userform

Status
Niet open voor verdere reacties.

Scallebe

Gebruiker
Lid geworden
29 okt 2014
Berichten
535
Specialists,

In mijn sheet heb ik de cel A1 25:30 (getalnotatie = [hh]:mm)
In cel B1 heb ik € 50,00 (getalnotatie = Valuta)

In cel C1 vermenigvuldig ik A1 met B1 met de uitkomst € 1.275 (getalnotatie = Valuta) - (Formule = A1*24*B1)

nog een vb A1 : 25:15 resultaat = €1.262,50

Door de aangepaste getalnotatie kan ik tijd vermenigvuldigen met een tarief tot op de minuut



Kan ik een textbox in een userform de zelfde aangepaste getalnotatie formuleren [hh]:mm zodat er in een andere textbox dezelfde uitkomst krijg zoals in de sheet?

tot hier toe houdt hij geen rekening met de minuten. Hij vermenigvuldigd enkel de uren met het ingegeven tarief.

Code:
Private Sub txtJan_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    With Me
        If IsEmpty(.txtJanuari) Then Exit Sub
        .txtJan.Value = (Val(.txtJanuari.Value) * Val(.txtTarTC.Value))
         Me.txtJan = Format(Me.txtJan, "Currency")
    End With
End Sub

En als ik dezelfde formule gebruik zoals in de sheet : extra : * 24

Code:
Private Sub txtJan_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    With Me
        If IsEmpty(.txtJanuari) Then Exit Sub
        .txtJan.Value = (Val(.txtJanuari.Value) * 24 * Val(.txtTarTC.Value))
         Me.txtJan = Format(Me.txtJan, "Currency")
    End With
End Sub

Dan krijg ik als uitkomst : € 30.000 bij een ingave van 25:00 (inderdaad : 25 * 24 * 50 = 30.000)

En ook bij een ingaven van bv 25:35 = € 30.000


Maw hoe kan ik de getalnotatie in mijn textbox instellen als [hh]:mm en hem dus ook correct laten berekenen.

Nu heb ik zo iets gevonden :

Code:
Private Sub UserForm_Initialize()
    With txtJanuari
        .Text = "[hh]:mm"
        .SetFocus
        .SelStart = 0
        .SelLength = Len(.Text)
    End With
End Sub

Maar dat werkt niet. :confused:

Thanks


Pascal
 
Laatst bewerkt:
maak eens gebruik van 'cdate' ipv. 'Val'.
 
Harry,

Bedoel je zo?

Code:
Private Sub txtJan_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    With Me
        If IsEmpty(.txtJanuari) Then Exit Sub
        .txtJan.Value = ([COLOR="#FF0000"]CDate[/COLOR](.txtJanuari.Value) * Val(.txtTarTC.Value))
         Me.txtJan = Format(Me.txtJan, "Currency")
    End With
End Sub

Ik krijg wel een error :confused:
 
Ik kan het niet testen.
Misschien met cdbl?
 
Weg met die 'Me' (want overbodig)

Code:
Private Sub txtjanuari_change()
    If txtjanuari.text<>"" then txtJan.Text = formatcurrency(--CDate(txtJanuari) * --txtTarTC.Text,2)
End Sub
 
Laatst bewerkt:
Heb het xlsb-bestand aangepast en bijgevoegd...

Het gaat over de form frmInputPrestaties de twee txtboxen voor januari.(txtJan en txtJanuari) De form is zeker nog niet klaar maar eens ik het weet voor januari kan ik wel verder.

Thanks

Bekijk bijlage Prestaties CCF.xlsb
 
En heb je daarin al gedaan wat snb liet zien?
 
Ja ik heb het aangepast maar daar ging ook iets fout...

In de bijlage in #7 is het nog met de vorige formule, niet met die snb.
 
Maar waarom vertel je er niet bij wat er fout gaat? Krijg je een foutmelding? Zoja, wat is deze dan? Wat moet men in je document doen om het probleem na te spelen?
 
Sorry....

start het form frmInputPrestaties via VBA. in het linkse veld bij Januari kan je een tijd ingeven : bv 25:00, klik op het txtbox ernaast (waar het resultaat zou moeten komen) en dan terug op een volgend txtbox (het resultaat komt nog niet onmiddellijk na ingeven van de tijd, weet niet hoe...)

Normaal verschijnt dan het (weliswaar foute) resultaat. (Bij Val ipv CDate) de minuten worden niet meegerekend. In het voorbeeld heb ik Cdate gezet zoals HSV voorstelde en dan komt de foutmelding : Fout 13 - Typen komt niet met elkaar overeen en de rode lijn hieronder licht geel op in de VBA code

Code:
Private Sub txtJan_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    With Me
        If IsEmpty(.txtJanuari) Then Exit Sub
[COLOR="#FF0000"]        .txtJan.Value = (CDate(.txtJanuari.Value) * Val(.txtTarTC.Value))
[/COLOR]         Me.txtJan = Format(Me.txtJan, "Currency")
    End With
End Sub
 
Laatst bewerkt:
Vergeet die _Exit routine in #11 en maak er dit van:
Code:
Private Sub txtjanuari_change()
    If IsEmpty(txtJanuari) Then Exit Sub
    txtJan = Format(Val(txtJanuari.Value) * Val(txtTarTC.Value), "Currency")
End Sub
 
Laatst bewerkt:
Edmoor,

Dit werkt maar er wordt geen rekening gehouden met de minuten. :thumb::confused:

bv 42 uur 36 minuten gepresteerd : input = 42:36 vermenigvuldigd hij alleen de uren met het tarief en niet de minuten.

In de sheet kan dat met de formule : tijd * 24 * tarief

De cellen in de sheets waar de gepresteerde tijd wordt ingevoerd heeft een getalopmaak [hh]:mm
 
Dat is een ander probleem. De constructie werkt zo dus :)
 
ja, van zodra ik de gepresteerde tijd begin in te typen rekent hij al :thumb:

nu nog de minuten... :rolleyes:
 
en dan nu de code van Snb (zonder die 'Val' die de minuten eraf haalt) getest.......

Code:
Private Sub txtjanuari_change()
    If txtjanuari<>"" then txtJan.Text = formatcurrency(--CDate(txtJanuari) * --txtTarTC.Text,2)
End Sub
 
Laatst bewerkt:
heb je code bijgezet (Dat is toch die je bedoeld he?)

De rode tekst wordt geel met de fout code : Fout 13 - Typen komt niet met elkaar overeen

Code:
Private Sub txtjanuari_change()
    If IsEmpty(txtJanuari) Then Exit Sub
    If txtJanuari <> "" Then [COLOR="#FF0000"]txtJan.Text = FormatCurrency(--CDate(txtJanuari) * --txtTarTC.Text, 2)[/COLOR]
'    txtJan.Value = Val(txtJanuari.Value) * Val(txtTarTC.Value)
    txtJan = Format(txtJan, "Currency")
End Sub
 
Laatst bewerkt:
Het probleem is dat je boven de 24 uur gaat invoeren.
Dit is dan al genoeg:
Code:
txtJan.Text = FormatCurrency(CDate(txtJanuari.Value) * txtTarTC.Text)
 
Laatst bewerkt:
Ja Klopt

In de sheet is dat geen probleem...

Kan de getalnotatie [hh]:mm niet gecodeerd worden in VBA zoals bv "Currency"
 
Test eens.
Code:
txtJan = Application.Convert(txtJanuari.Value, "day", "hr") * txtTarTC.Value
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan