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

som berekenen in vba

Status
Niet open voor verdere reacties.

vrientschap

Nieuwe gebruiker
Lid geworden
21 mei 2010
Berichten
3
met onderstaande code kan de som, verschil, product en deling berekend worden, het probleem is dat als ik als 1ste getal 10 en 2de getal 2 ingeef, ik bij de som 102 uitkom, waar zit dan juist de fout,en als het 2de getal een nul is zou hij een melding moeten geven, maar de code is dan blijkbaar niet juist,

alvast bedankt

Private Sub cmdBereken_Click()

Dim Getal1 As Single
Dim Getal2 As Single
Dim Som As Single
Dim Verschil As Single
Dim Deling As Single
Dim Product As Single

txtSom = txtG1 + txtG2
txtVerschil = txtG1 - txtG2
txtProduct = txtG1 * txtG2
txtDeling = txtG1 / txtG2

If txtG2 = 0 Then
MsgBox ("deze bewerking gaat niet")
End If

Getal1 = txtG1.Text
Getal2 = txtG2.Text
Som = txtSom.Text
Verschil = txtVerschil.Text
Product = txtProduct.Text
Deling = txtDeling.Text


End Sub

Private Sub txtG1_Change()

End Sub

Private Sub txtSom_Change()

End Sub
 
Beste vrientschap ;)

Probeer eens met 1* ervoor te zetten.

Vb. txtSom = 1*txtG1 + 1* txtG2

Zet de code vooraan.

Code:
If txtG2 = 0 Then
MsgBox ("deze bewerking gaat niet")
Else

Groetjes Danny. :thumb:
 
Laatst bewerkt:
som in vsb

beste Danny,
hartelijk bedankt voor de oplossing van de som, het werkt perfect, kunt u mij ook eens uitleggen waarom het nu wel gaat?
bij de volgende regel: txtDeling = txtG1 / txtG2 , krijg ik wel de melding "deze bewerking gaat niet" , zoals in het programma, en daarna een foutopsporing.

vriendelijke groeten, jan
 
Beste vrientschap ;)

Als je 2 txtBoxen met elkaar optelt worden ze achter elkaar geplaatst omdat het aanzien wordt als tekst.
Tekst kan je niet optellen !
Door er 1* ervoor te zetten wordt dit aanzien als waarden en niet meer als tekst.

txtDeling = txtG1 / txtG2 wordt dan:

txtDeling = 1*txtG1 / 1*txtG2

Groetjes Danny. :thumb:
 
Laatst bewerkt:
beste Danny,
bij de volgende regel: txtDeling = txtG1 / txtG2 , krijg ik wel de melding "deze bewerking gaat niet" , zoals in het programma, en daarna een foutopsporing.

vriendelijke groeten, jan

Heb het even nagebootst, en de code iets veranderd.
En eigenlijk moet je nog iets toevoegen zodat de boxen eerst geledigd worden bij nieuwe invoer.

Heb het niet in het bestand staan, maar zoiets als onderstaande code.
Code:
Private Sub cmdBereken_Click()
Dim msg
Dim Getal1 As Single
Dim Getal2 As Single
Dim Som As Single
Dim Verschil As Single
Dim Deling As Single
Dim Product As Single

txtSom.Text = ""
txtVerschil.Text = ""
txtProduct.Text = ""
txtDeling.Text = ""

On Error Resume Next  'als txtG1 of txtG2 leeg is
txtSom = 1 * txtG1 + 1 * txtG2
txtVerschil = txtG1 - txtG2
txtProduct = txtG1 * txtG2

If txtG2 = "" Then
Exit Sub
ElseIf txtG2.Text = 0 Then
msg = MsgBox("Delen door nul gaat niet ", vbOK)
End If
      If msg = vbOK Then
    txtDeling.Text = "Delen door nul gaat niet"
    Exit Sub

Else: txtDeling = txtG1 / txtG2
End If

Getal1 = txtG1.Text
Getal2 = txtG2.Text
Som = txtSom.Text
Verschil = txtVerschil.Text
Product = txtProduct.Text
Deling = txtDeling.Text
End Sub
 

Bijlagen

Laatst bewerkt:
som vba

best Danny,
ik heb een deel van de code kunnen gebruiken en daarmee is het probleem opgelost,
zeer hartelijk bedankt voor de hulp

groeten ,jan vrient
 
probeer eens met 1* ervoor te zetten.

De geboden oplossing is prima, maar netter is het om een veld via de daarvoor bestemde functies om te zetten.
Code:
txtSom = Cint(txtG1) + Cint(txtG2)
In bovenstaand voorbeeld wordt de tekstwaarde omgezet in een integer.

Groet, Leo
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan