Genberegning af funktion i vba

Tags:    visual-basic

<< < 12 > >>
Jeg har lavet en funktion i vba, som ved et klik i en checkbox skal genberegnes. Jeg kan ikke kalde funktionen, hvorfor ikke?



14 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Prøv at poste din kode, ellers er det bedste man kan gøre er at gætte.

Hvilken 'event' bruger til at kalde funktionen? Click, changed?




Sub CheckBox1_Click()

Call beregn_ydelse

End Sub

Function beregn_ydelse(RG As Double, RO As Double, BS As Double, T As Double, RF As Double) As Double
Dim x As Double

If Range("F8") = True And Range("J8") = False Then
x = RG * (RO + BS) / (1 - (1 + (RO + BS)) ^ -T)

ElseIf Range("J8") = True And Range("F8") = False Then
x = RG * (RO + BS) / (1 - (1 + (RO + BS)) ^ -T) * 3

ElseIf Range("F8") And Range("J8") = True Then
x = 0
MsgBox "Du har valgt både Bruto & Netto!"

Else
x = 0
MsgBox "Du har ikke valgt Brutto eller Netto"

End If

beregn_ydelse = x

End Function


dit kald sender ik nogen parameteres med som din function forventer..

Call beregn_ydelse(RG,RO,BS,T,RF)

Function beregn_ydelse(RG As Double, RO As Double, BS As Double, T As Double, RF As Double) As Double



Indlæg senest redigeret d. 26.03.2009 14:32 af Bruger #3427
Prøv at poste din kode, ellers er det bedste man kan gøre er at gætte.

Hvilken 'event' bruger til at kalde funktionen? Click, changed?


Sub CheckBox1_Click()

Call beregn_ydelse

End Sub

Function beregn_ydelse(RG As Double, RO As Double, BS As Double, T As Double, RF As Double) As Double
Dim x As Double

If Range("F8") = True And Range("J8") = False Then
x = RG * (RO + BS) / (1 - (1 + (RO + BS)) ^ -T)

ElseIf Range("J8") = True And Range("F8") = False Then
x = RG * (RO + BS) / (1 - (1 + (RO + BS)) ^ -T) * 3

ElseIf Range("F8") And Range("J8") = True Then
x = 0
MsgBox "Du har valgt både Bruto & Netto!"

Else
x = 0
MsgBox "Du har ikke valgt Brutto eller Netto"

End If

beregn_ydelse = x

End Function



Jeg får stadig

ByRef argument type mismatch, hvor den markerer RG, som om den ikke kender RG..



alså hvad sender du med?
er der noget i RG, RO, BS, T og RF ?



RG, RO, BS, T og RF har en værdi i funktionen..





Her er koden:

Sub CheckBox1_Click()

Call beregn_ydelse(RG, RO, BS, T, RF)

End Sub

Sub CheckBox2_Click()

Call beregn_ydelse(RG, RO, BS, T, RF)

End Sub

Function beregn_ydelse(RG As Double, RO As Double, BS As Double, T As Double, RF As Double) As Double
Dim x As Double

If Range("F8") = True And Range("J8") = False Then
x = RG * (RO + BS) / (1 - (1 + (RO + BS)) ^ -T)

ElseIf Range("J8") = True And Range("F8") = False Then
x = RG * (RO + BS) / (1 - (1 + (RO + BS)) ^ -T) * 3

ElseIf Range("F8") And Range("J8") = True Then
x = 0
MsgBox "Du har valgt både Bruto & Netto"

Else
x = 0
MsgBox "Du har ikke valgt Brutto eller Netto"

End If

beregn_ydelse = x

End Function





Checkboxene giver SAND eller FALSK i "F8" og "J8", men værdien af funktionen skel jo genberegnes hver gang et flueben ændres i checkboxen..





Tror jeg har løst det med ByVal, men den genberegner stadig ikke og jeg får en Overflow error..



alså din function forventer jo 5parameter iform af tal..

Call beregn_ydelse(RG, RO, BS, T, RF)
så du kunne sende noget der minder om:
Call beregn_ydelse(5, 58, 19, 2, 47)


så har du noget i den her stil:
dim RG = 43
dim RO = 54
'... and so on ..
'eller er de sat på en anden måde før du sender dem med ?
Sub CheckBox1_Click()

Call beregn_ydelse(RG, RO, BS, T, RF)

End Sub

Sub CheckBox2_Click()

Call beregn_ydelse(RG, RO, BS, T, RF)

End Sub



<< < 12 > >>
t