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

rekenen in UserForm

Status
Niet open voor verdere reacties.

weusty

Gebruiker
Lid geworden
23 feb 2007
Berichten
133
Ik heb een UserForm gemaakt voor een uren lijst.

Nu wil ik graag dat de waarden uit:

TextBoxA9
TextBoxA10
TextBoxA11
TextBoxA12
TextBoxA13

worden OPGETELD en weergegeven worden in TextBoxA14

wie weet of dit mogelijk is en hoe?

b.v.d.
Weust
 
Als je nu eens in een lege regel dit typt

TextBoxA14

vervolgens zet je een punt.

Dan geeft VBA jou alle eigenschappen en methoden die van toepassing zijn op de textbox met naam TextBoxA14. Door die lijst moet je gaan als je wil weten wat je zoekt.

Zo kom je Value en Text tegen. Experimenteer daar maar wat mee.

Die andere textboxen hebben identieke eigenschappen en methoden, dus ook Value en Text.

Wigi
 
Geef dan jouw code en misschien kunnen we je in de juiste richting duwen.
 
Zo kom je Value en Text tegen
Dat maakt helaas niet uit beste Wigi. Het wordt namelijk altijd als text weggeschreven.
Om het naar een getal om te zetten moet je de string converteren naar een waarde/getal met de functie CDbl(......

Voorbeeld:

Code:
Text3.value = cdbl(text1.value)+cdbl(Text2.value)

Verder heeft Wigi wel gelijk, je zou best wel even jouw code kunnen plaatsen. Maakt het altijd een stuk makkelijker voor een ander.
 
Dag Radjesh Klauke,

Je had gelijk. ik heb nu deze code gebruikt:
code:
TextBoxH14.Value = CDbl(TextBoxH9.Value) + CDbl(TextBoxH10.Value)

en hij rekent het inderdaad uit.

maar ik wil graag dat het resultaat van de som al weergegeven wordt in het Userform voor dat ik op okay druk. Ik dacht eerst dat het kwam omdat ik deze Textboxen gelockt had maar dat bleek niet het geval.

Enig idee?

m.v.g. Weusty
 
In de change_event van de textbox betreffende code plaatsen, hetgeen echter wel eens tot een error kan leiden, aangezien er niet met een Null-waarde kan worden gerekend.

Ik hoop dat een On Error Resume Next of een If Text1.value = "" Then Exit sub afdoende is.

- Het "locken" van een Textbox maakt het de gebruiker onmogelijk om iets te wijzigen/plaatsen in de betreffende Textbox. Dat geldt echter niet voor het programma zelf.
- Bij Enabled = False, kan het programma daar ook niets meer mee doen, wat eveneens kan resulteren tot een fatale fout :p
 
Laatst bewerkt:
misschien een beetje stom,

maar wat houd de change_event in. Heb gekeken bij eigenschappen van mijn tekstbox maar tref hem daar niet aan.

Of is het soms de bedoeling dat ik een code schrijf met iets van:

TextBoxA14.change_event
TextBoxA14.Value = CDbl(TextBoxA9.Value) + CDbl(TextBoxA10.Value)

If TextBoxA14.value = "" Then Exit sub afdoende is

????
 
Ik was in de veronderstelling dat je VBA een klein beetje kende, anders was ik niet zo kort door de bocht geweest. Mijn excuus daarvoor. Het is overigens zeker niet een stomme vraag ;)
Code:
Private Sub Text1_Change()
    ' uwer code
End sub
 
Nog even een kleine aanpassing, anders krijg je alleen maar foutmeldingen....

Zorg er voor dat er altijd een 0 in alle textboxen staat voordat je met een berekening begint.

Dus in de Form_Load()
Textbox1.text = 0
Textbox2.text = 0
Textbox3.text = 0
Textbox4.text = 0
Nu kun je dit in een array verwerken, maar we houden het nog even simpel. Dat andere komt later nog wel eens.
 
Ja ben een VBA beginner. Ben meer van het kopieer en plak werk:cool:

Heb er nu dit van gemaakt:

Private Sub TextBoxH14_Change()
TextBoxA14.change_event
TextBoxA14.Value = CDbl(TextBoxA9.Value) + CDbl(TextBoxA10.Value)
If TextBoxA14.Value = "" Then Exit Sub
End If
End Sub

Maar helaas, zelfs het resultaat op de sheet zelf wordt niet meer weer gegeven.

Maar stop voor vandaag. Ben vrij. Spreek je morgen wellicht wel weer.

groet
 
Die

Code:
TextBoxA14.change_event

moet vast en zeker weg, voor niets nodig.

Zoiets maak ik ervan:

Code:
Private Sub TextBoxA9_Change()
    
    Dim dblSum As Double
    Dim i As Integer
    
    For i = 9 To 13
        
        dblSum = Application.WorksheetFunction.Sum(dblSum, CDbl(Controls("TextBoxA" & i).Value))
        
    Next
    
    textBoxA14.Value = dblSum
    
End Sub

Wigi
 
Wigi maakt dus nu gebruik van een Array, omdat ik dat voor een beginneling iets te moeilijk vind heb ik even iets in elkaar gezet met een extra functie. Je kunt nog niet met komma's werken, maar dat komt nog wel. Dit moet je eerst even snappen.

Ik heb het overigens wel zo gemaakt dat je het zelf moet aanpassen. Door het zelf te doen leer je het meest. Er staat voldoende informatie in omtrent de betekenis van de procedures . mocht je er niet uit komen, dan horen we het wel. ;)

(Heis nog korter dan die van jouw Wigi :p :D :thumb: ;) )

Module (modOptellen)
Code:
Option Explicit

Sub Optellen()
    With UserForm1
        .TextBox4.Value = CDbl(.TextBox1.Value) + CDbl(.TextBox2.Value) + CDbl(.TextBox3.Value)
    End With
End Sub

UserForm1
Code:
Private Sub TextBox1_Change()
    Call modOptellen.Optellen
End Sub

Private Sub TextBox1_Enter()
    With TextBox1
        .SelStart = 0
        .SelLength = Len(.Text)
    End With
End Sub

Private Sub TextBox2_Change()
    Call modOptellen.Optellen
End Sub

Private Sub TextBox2_Enter()
    With TextBox2
        .SelStart = 0
        .SelLength = Len(.Text)
    End With
End Sub

Private Sub TextBox3_Change()
    Call modOptellen.Optellen
End Sub

Private Sub TextBox3_Enter()
    With TextBox3
        .SelStart = 0
        .SelLength = Len(.Text)
    End With
End Sub

Private Sub UserForm_Initialize()
    Call modOptellen.Optellen
End Sub
 
Laatst bewerkt:
(Heis nog korter dan die van jouw Wigi :p :D :thumb: ;) )

In principe heb je gelijk, al wil ik wel eens zien met welke code er dan gewerkt gaat worden als het om een stuk of 20 textboxes gaat die opgeteld moeten worden :confused: ;)

Om nog maar te zwijgen van alle change events e.d. voor al die textboxes (die zouden eigenlijk in een klassemodule behandeld moeten worden).

Wigi
 
Daar heb je gelijk aan, maar we hebben hier te maken met een beginner en die wil ik echt niet gelijk aan Array's laten werken en al helemaal niet aan KlasseModules. :thumb: Ik denk dat de basis eerst maar eens begrepen moet worden. Maaarjaaaaaa.... Zo denk ik dan maar.
 
Dat is idd de (eeuwige) afruil tussen een werkende en efficiënte oplossing geven, en een oplossing die de vraagsteller helemaal kan begrijpen.

Bye

Wigi
 
Dag Radjesh Klauke en Wigi,

het ZIP bestandje van Radjesh Klauke deed precies wat ik ook wou. Hij doet het zelfs op mijn formulier, mits ik niet op backspace druk.

Maar nou komt het probleem waar Wigi het ook al over had. Er moeten meerdere berekeningen worden gemaakt.

Ik heb heb even een bestandje(ontdaan van persoons / bedrijfsnamen etc) bijgevoegd. Zo kunnen julie zien waar ik mee bezig ben. Mochten julie tips hebben om dit eenvoudiger te doen dan hoor ik dit graag.

Kunnen julie meteen mijn knip en plak werk bewonderen:D

Groet weust
 

Bijlagen

Kijk her maar eens even naar... Ik heb de code een flink stuk ingekort.Het uiterlijk heb ik ook aangepast...

Ik zou zeggen kijk eerst maar eens even. Hij ziet er nu best wel mooi uit. Niet schrikken overigens :p
 
Laatst bewerkt:
Uitpakken..... Dat kan ook met Winzip.
Winrar heeft een veel betere compressie dan Winzip, daarom gebruik ik dit programma. Daarnaast heb je veel meer mogelijkheden en makkelijker in mijn ogen ;)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan