Avatar billede Soegaard80 Nybegynder
26. januar 2013 - 16:35 Der er 12 kommentarer og
1 løsning

Gennemsnit udregnet efter opdatering af felter i userform

Hej

Jeg sidder med en Userform i VBA hvor jeg indtaster talværdier i 6 felter. Jeg vil gerne have at når jeg har indtastet tal så bliver gennemsnittet af disse tal vist i selv-samme UserForm i et tekstfelt eller en label. Men det skal være løbende. Den skal begynde at vise gennemsnittet allerede efter 2 indtastninger.
Avatar billede excelent Ekspert
26. januar 2013 - 19:13 #1
Sub Beregn()
For Each boks In Me.Controls
If TypeName(boks) = "TextBox" Then
If IsNumeric(boks.Value) And boks.Name <> Me.TextBox7.Name Then
tal = tal + CDbl(boks.Value)
End If
End If
Next
Me.TextBox7.Value = tal / 6
End Sub

indsæt Call Beregn i alle 6 tekstboks change modul

Private Sub TextBox1_Change()
Call Beregn
End Sub
...
...
..
Avatar billede Soegaard80 Nybegynder
26. januar 2013 - 19:38 #2
Kan man lave en kode der laver gennemsnittet hvis jeg kun bruger de 4 af felterne?
Avatar billede excelent Ekspert
26. januar 2013 - 19:40 #3
Sub Beregn()
For Each boks In Me.Controls
If TypeName(boks) = "TextBox" Then
If IsNumeric(boks.Value) And boks.Name <> Me.TextBox7.Name Then
stk = stk + 1
tal = tal + CDbl(boks.Value)
End If
End If
Next
If tal > 0 Then Me.TextBox7.Value = tal / stk Else Me.TextBox7.Value = 0
End Sub
Avatar billede Soegaard80 Nybegynder
26. januar 2013 - 20:03 #4
TextBox7 bliver ved med at give "0". Hvad pokker gør jeg forkert?

Koden er lagt ind som nedenstående:

Sub Beregn()
For Each boks In Me.Controls
If TypeName(boks) = "Brød" Then
If IsNumeric(boks.Value) And boks.Name <> Me.TextBox7.Name Then
stk = stk + 1
tal = tal + CDec(boks.Value)
End If
End If
Next
If tal > 0 Then Me.TextBox7.Value = tal / stk Else Me.TextBox7.Value = 0
End Sub


Private Sub Brød41_Change()
    Call Beregn
End Sub
Private Sub Brød42_Change()
    Call Beregn
End Sub
Private Sub Brød43_Change()
    Call Beregn
End Sub
Private Sub Brød44_Change()
    Call Beregn
End Sub
Private Sub Brød45_Change()
    Call Beregn
End Sub
Private Sub Brød46_Change()
    Call Beregn
End Sub
Avatar billede Soegaard80 Nybegynder
26. januar 2013 - 20:04 #5
tal = tal + CDec(boks.Value) er ændret tilbage til
tal = tal + CDdl(boks.Value)

Skulle bare lige prøve om det gav en forskel.
Avatar billede excelent Ekspert
26. januar 2013 - 20:13 #6
Dobbeltklik på Userformen
indsæt al kode der
Avatar billede excelent Ekspert
26. januar 2013 - 20:18 #7
obs typename skal være "TextBox"

If TypeName(boks) = "TextBox" Then

ikke "Brød"
Avatar billede Soegaard80 Nybegynder
27. januar 2013 - 12:02 #8
Nu laver den så et gennemsnit, men jeg skulle nok have skrevet at jeg har flere textboxe på userformen med andre tal i. Når jeg taster "2" ind kommer den med et gennemsnit på 31,75. Har du et andet forslag til hvordan jeg kan gøre det ?
Avatar billede excelent Ekspert
27. januar 2013 - 13:40 #9
ok så skal jeg bruge navnene på  de 6 bokse + sum-boks
og et par stykker af de øvrige, så jeg kan se om der er
et mønster jeg kan bruge
Avatar billede Soegaard80 Nybegynder
27. januar 2013 - 13:57 #10
De hedder "Brød41" "Brød42" "Brød43" "Brød44" "Brød45" og "Brød46". De andre hedder "txtLinje" og "txtSkema", men jeg tror jeg griber den lidt forkert an. Jeg har vist stirret mig blind på at det skal vises i Userformen. Det er nok hvis det bliver lagt ind i et skema sammen med de 8 ovennævnte felter. Måske er det nemmere at lave en automatisk udregning i et regneark end det er at lave i en Userform. Så kan jeg senere hive dataene på gennemsnittet ud i en graf når jeg får brug for det.
Avatar billede excelent Ekspert
27. januar 2013 - 14:52 #11
Ved ikke hvad navnet på din sumBoks er her hedder den snit

Sub Beregn()
For Each boks In Me.Controls
If TypeName(boks) = "TextBox" Then
If IsNumeric(boks.Value) And Left(boks.Name, 4) = "Brød" Then
stk = stk + 1
tal = tal + CDbl(boks.Value)
End If
End If
Next
If tal <> 0 Then Me.snit.Value = tal / stk Else Me.snit.Value = 0
End Sub
Avatar billede Soegaard80 Nybegynder
02. februar 2013 - 10:55 #12
smider du lige et svar. Det ser ud til at virke.
Avatar billede excelent Ekspert
02. februar 2013 - 18:49 #13
ja
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester