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

VBA Form Labels met berekening

Status
Niet open voor verdere reacties.

Roeijoen

Gebruiker
Lid geworden
2 feb 2012
Berichten
26
Beste Lezers,

hopelijk kunnen jullie me helpen. ik probeer in een VBA formulier dingen bij elkaar op te tellen de gewoonlijke (Label1) waarde 0,5 + (Label2) waarde 0,5 = (Label 3) uitkomst 1.
HTML:
Private Sub Calculate()

With Me
    .numKcal = Val(.txtKcal1) + Val(.txtKcal2)
    .numEiwit.Value = Val(Me.txtEiwitten1.Value) + Val(Me.txtEiwitten2.Value)
    .numKoolhydraten = Val(.txtKoolhydraten1) + Val(.txtKoolhydraten2)
    .numVoedingsvezels = Val(.txtVezels1) + Val(.txtVezels2)
    .numVet = Val(.txtVet1) + Val(.txtVet2)
End With


End Sub

het is gewoon bij elkaar optellen en zie de volgende fout: als is Val(***) niet voor de labels zet krijg ik 0,50,5 in het labeltje te zien. Als ik Val(***) er wel voor zet telt het systeem de getallen zonder komma wel goed op maar de getallen met een "," niet.

als ik youtube filmpjes kijk met simpele calculatoren dan schijnt het al te werken zonder Val(***) maar ik krijg het niet voor elkaar.

ik hoop dat jullie me kunnen helpen. Helaas kan ik het bestand niet delen ivm persoonlijke gegevens die ik erin heb verwerkt.

met vriendelijke groet,

Jeroen
 
heb je .Value al geprobeerd ?

Een voorbeeldbestand is beter..........................
 
Deze:
Code:
Label1.Caption = Val(Replace(TextBox1.Text, ",", ".")) + Val(Replace(TextBox2.Text, ",", "."))

Je moet dus een punt gebruiken in plaats van een komma, maar op bovenstaande manier mag het allebei.
En dat With Me is overbodig.
 
En hoe komen de getallen in de Labels van het formulier?
Bedoel je geen TextBox?
 
Nee klopt inderdaad. het zijn textboxen.

@ Edmoore jij beschrijft dat het omgezet moet worden naar "." nu heb ik het volgende gevonden "CSng" deze werkt ook maar kan ik daarop problemen tegen komen?

Nog 1 vraagje nu maak ik gebruik van heel veel velden waar berekeningen in worden gedaan. nu had ik het volgende gedaan maar dat werkt niet.
hieronder zie je een stukje die ik eigenlijk 18 keer wil kopieren en alleen "Nmr" wijzigen zodat ik niet zoveel werk heb.

HTML:
Private Sub txtEiwitten1_AfterUpdate()
'Nummer van het Veld 1 t/m 18
Dim Nmr As Byte
Nmr = 1

Dim kCal As Single                                      'Kollom F
    kCal = CSng("txtkCal" & Nmr & ".Value")
Dim Vet As Single                                       'Kollom G
    Vet = CSng("Vet" & Nmr & ".Value")
Dim VerzVet As Single                                   'Kollom H
    VerzVet = CSng("VerzVet" & Nmr & ".Value")
Dim Koolhydraten As Single                              'Kollom I
    Koolhydraten = CSng("txtKoolhydraten" & Nmr & ".Value")
Dim Vezels As Single                                    'Kollom J
    Vezels = CSng("txtVezels" & Nmr & ".Value")
Dim Eiwit As Single                                     'Kollom K
    Eiwit = CSng("txtEiwitten" & Nmr & ".Value")
    
Dim Aantal As Single
Aantal = CSng("txtEenheden" & Nmr & ".Value")
    
If WorksheetFunction.CountIf(Sheets("Productenlijst").Range("PD_Producten"), "Me.pdProduct & Nmr & .Value") = 0 And _
"Me.txtEiwitten & Nmr & .Value" > 0 Then
Call Calculate

With Worksheets("Productenlijst")
        .Range("A65535").End(xlUp).Offset(1, 0).Value = "Me.pdProductSoort & Nmr & .Value"
        .Range("B65535").End(xlUp).Offset(1, 0).Value = "Me.pdProduct & Nmr & .Value"
        .Range("D65535").End(xlUp).Offset(1, 0).Value = "Me.pdEenheidProduct & Nmr & .Value"
        .Range("E65535").End(xlUp).Offset(1, 0).Value = "Me.pdOnlineWinkel & Nmr & .Value"
        
        .Range("F65535").End(xlUp).Offset(1, 0).Value = kCal / Aantal
        .Range("G65535").End(xlUp).Offset(1, 0).Value = Vet / Aantal
        .Range("H65535").End(xlUp).Offset(1, 0).Value = VerzVet / Aantal
        .Range("I65535").End(xlUp).Offset(1, 0).Value = Koolhydraten / Aantal
        .Range("J65535").End(xlUp).Offset(1, 0).Value = Vezels / Aantal
        .Range("K65535").End(xlUp).Offset(1, 0).Value = Eiwit / Aantal
End With
        
Else
Exit Sub
End If


End Sub
 
Wat ik al zei.
Gebruik een punt in plaats van een komma voor decimalen.
Dan hoef je er geen enkele bewerking op los te laten.
Dus niet de Replace, niet de CSng en die Dim's zijn dan ook overbodig.
 
Laatst bewerkt:
Ga ik dat doen. heb jij nog een oplossing tot het goed krijgen van een Variable als "Nmr" in het script? deze werkt nu niet hij ziet de waarde niet maar ziet het als tekst.
 
Probeer eens...

Code:
Dim Nmr As long
Ipv.
Code:
Dim Nmr As Byte
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan