numerieke waarde van string retourneren

Status
Niet open voor verdere reacties.

so10070

Gebruiker
Lid geworden
4 feb 2014
Berichten
424
In de array moet de numerieke waarde van de string "dag" opgeslagen worden, maar hoe? Weet het niet :(. Hierbij de code
Code:
    For i = 1 To AantalDiensten        
        dag = "Me.txtDagen" & i & ".value"                
        Dagen(i) = Val(dag)
    Next i
 
Je geeft te weinig informatie. Om te beginnen weten we niet wat de eigenschap is van de variabele Dagen(), noch hoe dag is gedefinieerd. De formule dag = "Me.txtDagen" & i & ".value" is overigens wel een hele rare...
 
Dit is de code. Ik heb 19 numerieke velden aangemaakt. De naam van de variabele voor deze velden noem ik "txtDagen1" ... tot "txtDagen19". De waarde ervan wil ik opslagen in de array "Dagen(i)", maar slaag hier niet in. Het lukt wel om de waarde van de variabelen "Me.txtDagen1" tot en met "Me.txtDagen19" apart in de array op te slagen maar de getallen 1 tot en met 19 eveneens als variabelen meegeven lukt niet. Ik heb het volgende reeds geprobeerd, maar krijg dan verschillende foutmeldingen: "Me.txtDagen(i)", "Me.txtDagen & i", eerst opslagen in een andere variabele, zoals "dag" ("Me.txtDagen" & i & ".value"), enz.
Code:
Private Sub Form_Load()
    Const AantalDiensten = 19
    Dim i As Integer
    Dim Dagen(0 To AantalDiensten) As Single
    Dim TotaalDagen As Single
    
    TotaalDagen = 0
    
    For i = 1 To AantalDiensten                
        Dagen(i) = Me.txtDagen & (i)
        TotaalDagen = TotaalDagen + Dagen(i)
    Next i
    
    Me.txtTotaalWerkdagen = TotaalDagen
End Sub
 
Ik heb 19 numerieke velden aangemaakt. De naam van de variabele voor deze velden noem ik "txtDagen1" ... tot "txtDagen19".
Hier bedoel je vermoed ik dat de tekstvelden txtDagen1 t/m txtDagen19 heten. Variabelen met die namen zie ik namelijk niet terug. Er is een simpele truc om dynamisch objecten van een formulier te lezen. Je gebruikt dan de indexnaam, en niet de rechtstreekse koppeling met de punt. Je krijgt dan dit:

Code:
Option Compare Database
Option Base 1
Om de matrix met 1 te laten beginnen (waarom doe jij het zo ingewikkeld, en begin je met 0 terwijl je 1e tekstvak met 1 begint?)
Code:
Private Sub Form_Load()
Const AantalDiensten = 19
Dim i As Integer
Dim Dagen(AantalDiensten) As Single
Dim TotaalDagen As Single
    
    TotaalDagen = 0
    For i = 1 To AantalDiensten
        Dagen(i) = Me("txtDagen" & i)
        TotaalDagen = TotaalDagen + Dagen(i)
    Next i

    Me.txtTotaalWerkdagen = TotaalDagen
End Sub
 
Dat van die "Option Base" en het aanspreken van objecten via indexen kende ik niet. Heb nog een weg te gaan wat betreft mijn (parate) kennis, maar elke dag doen we stapjes in de goede richting. Nogmaals bedankt voor de fantastische hulp: het werkt! :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan