26. januar 2013 - 16:35Der 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.
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 ... ... ..
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
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
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 ?
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.
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
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.