|  | Change Order of code |  | |
| | | Bob Vance |  |
| Posted: Sat Sep 13, 2008 9:19 pm Post subject: Change Order of code |  |
| |  | |
This code is taking totals away in the wrong order tbCurrent should be last to be subtracted, this code is making it the first to be subtracted....Any help thanks Bob
Function Dues(tb3Months0 As Double, tb2Months0 As Currency, tb1Month0 As Currency, tbCurrent0 As Currency, months As Integer) As Currency Dim tb3Months As Currency, tb2Months As Currency, tb1Month As Currency, tbCurrent As Currency Dim diff As Double
diff = 0 tb3Months = tb3Months0 tb2Months = tb2Months0 tb1Month = tb1Month0 tbCurrent = tbCurrent0
If tb3Months > 0 Then If tb2Months < 0 Then diff = tb3Months + tb2Months tb3Months = IIf(diff < 0, 0, diff) tb2Months = IIf(diff < 0, diff, 0) End If ElseIf tb3Months < 0 Then If tb2Months > 0 Then diff = tb3Months + tb2Months tb2Months = IIf(diff < 0, 0, diff) tb3Months = IIf(diff < 0, diff, 0) End If End If
If tb3Months > 0 Then If tb1Month < 0 Then diff = tb3Months + tb1Month tb3Months = IIf(diff < 0, 0, diff) tb1Month = IIf(diff < 0, diff, 0) End If ElseIf tb3Months < 0 Then If tb1Month > 0 Then diff = tb3Months + tb1Month tb1Month = IIf(diff < 0, 0, diff) tb3Months = IIf(diff < 0, diff, 0) End If End If
If tb3Months > 0 Then If tbCurrent < 0 Then diff = tb3Months + tbCurrent tb3Months = IIf(diff < 0, 0, diff) tbCurrent = IIf(diff < 0, diff, 0) End If ElseIf tb3Months < 0 Then If tbCurrent > 0 Then diff = tb3Months + tbCurrent tbCurrent = IIf(diff < 0, 0, diff) tb3Months = IIf(diff < 0, diff, 0) End If End If
If tb2Months > 0 Then If tb1Month < 0 Then diff = tb2Months + tb1Month tb2Months = IIf(diff < 0, 0, diff) tb1Month = IIf(diff < 0, diff, 0) End If ElseIf tb2Months < 0 Then If tb1Month > 0 Then diff = tb2Months + tb1Month tb1Month = IIf(diff < 0, 0, diff) tb2Months = IIf(diff < 0, diff, 0) End If End If
If tb2Months > 0 Then If tbCurrent < 0 Then diff = tb2Months + tbCurrent tb2Months = IIf(diff < 0, 0, diff) tbCurrent = IIf(diff < 0, diff, 0) End If ElseIf tb2Months < 0 Then If tbCurrent > 0 Then diff = tb2Months + tbCurrent tbCurrent = IIf(diff < 0, 0, diff) tb2Months = IIf(diff < 0, diff, 0) End If End If
If tb1Month > 0 Then If tbCurrent < 0 Then diff = tb1Month + tbCurrent tb1Month = IIf(diff < 0, 0, diff) tbCurrent = IIf(diff < 0, diff, 0) End If ElseIf tb1Month < 0 Then If tbCurrent > 0 Then diff = tb1Month + tbCurrent tbCurrent = IIf(diff < 0, 0, diff) tb1Month = IIf(diff < 0, diff, 0) End If End If
Select Case months Case 3: Dues = tb3Months Case 2: Dues = tb2Months Case 1: Dues = tb1Month Case 0: Dues = tbCurrent End Select End Function -- Thanks in advance for any help with this......Bob WindowsXP..MS Access 2007 |
| |
| | | Clif McIrvin |  |
| Posted: Sat Sep 13, 2008 11:04 pm Post subject: Re: Change Order of code |  |
| |  | |
"Bob Vance" <rjvance@ihug.co.nz> wrote in message news:elRY6cfFJHA.4304@TK2MSFTNGP02.phx.gbl...
| Quote: | This code is taking totals away in the wrong order tbCurrent should be last to be subtracted, this code is making it the first to be subtracted....Any help thanks Bob
|
I only worked my way part way through the code -- what happens if tb3Months (etc) is ZERO?
One or the other IF or ELSEIF should probably be >= or <= as appropriate, this might be the key you are looking for.
A question / observation:
Wouldn't ByVal in the function definition accomplish the same thing as setting up a dummy variable? (VBA's default is ByRef.)
-- Clif Still learning Access 2003
| Quote: | Function Dues(tb3Months0 As Double, tb2Months0 As Currency, tb1Month0 As Currency, tbCurrent0 As Currency, months As Integer) As Currency Dim tb3Months As Currency, tb2Months As Currency, tb1Month As Currency, tbCurrent As Currency Dim diff As Double
diff = 0 tb3Months = tb3Months0 tb2Months = tb2Months0 tb1Month = tb1Month0 tbCurrent = tbCurrent0
If tb3Months > 0 Then If tb2Months < 0 Then diff = tb3Months + tb2Months tb3Months = IIf(diff < 0, 0, diff) tb2Months = IIf(diff < 0, diff, 0) End If ElseIf tb3Months < 0 Then If tb2Months > 0 Then diff = tb3Months + tb2Months tb2Months = IIf(diff < 0, 0, diff) tb3Months = IIf(diff < 0, diff, 0) End If End If
If tb3Months > 0 Then If tb1Month < 0 Then diff = tb3Months + tb1Month tb3Months = IIf(diff < 0, 0, diff) tb1Month = IIf(diff < 0, diff, 0) End If ElseIf tb3Months < 0 Then If tb1Month > 0 Then diff = tb3Months + tb1Month tb1Month = IIf(diff < 0, 0, diff) tb3Months = IIf(diff < 0, diff, 0) End If End If
If tb3Months > 0 Then If tbCurrent < 0 Then diff = tb3Months + tbCurrent tb3Months = IIf(diff < 0, 0, diff) tbCurrent = IIf(diff < 0, diff, 0) End If ElseIf tb3Months < 0 Then If tbCurrent > 0 Then diff = tb3Months + tbCurrent tbCurrent = IIf(diff < 0, 0, diff) tb3Months = IIf(diff < 0, diff, 0) End If End If
If tb2Months > 0 Then If tb1Month < 0 Then diff = tb2Months + tb1Month tb2Months = IIf(diff < 0, 0, diff) tb1Month = IIf(diff < 0, diff, 0) End If ElseIf tb2Months < 0 Then If tb1Month > 0 Then diff = tb2Months + tb1Month tb1Month = IIf(diff < 0, 0, diff) tb2Months = IIf(diff < 0, diff, 0) End If End If
If tb2Months > 0 Then If tbCurrent < 0 Then diff = tb2Months + tbCurrent tb2Months = IIf(diff < 0, 0, diff) tbCurrent = IIf(diff < 0, diff, 0) End If ElseIf tb2Months < 0 Then If tbCurrent > 0 Then diff = tb2Months + tbCurrent tbCurrent = IIf(diff < 0, 0, diff) tb2Months = IIf(diff < 0, diff, 0) End If End If
If tb1Month > 0 Then If tbCurrent < 0 Then diff = tb1Month + tbCurrent tb1Month = IIf(diff < 0, 0, diff) tbCurrent = IIf(diff < 0, diff, 0) End If ElseIf tb1Month < 0 Then If tbCurrent > 0 Then diff = tb1Month + tbCurrent tbCurrent = IIf(diff < 0, 0, diff) tb1Month = IIf(diff < 0, diff, 0) End If End If
Select Case months Case 3: Dues = tb3Months Case 2: Dues = tb2Months Case 1: Dues = tb1Month Case 0: Dues = tbCurrent End Select End Function -- Thanks in advance for any help with this......Bob WindowsXP..MS Access 2007
|
-- Clif Still learning Access 2003 |
| |
|
|