My first question is whether excel VBA will recognize an if statement with two constraints, i.e.
IF Range(somecell).value > 0 AND Range(anothercell).value < 100 Then:
execute code here
Because I am having a problem with getting the code enclosed in an if statement to trigger when I know that both constraints are satisfied in a script I’m running. Maybe its a problem with my logic.
I’ve included the code, please see if you can point out any errors in my logic or VBA.
Background Information (I also included some in the code):
There are two levers that change cell F71(D40 and D41). The requirements are that F71 be greater than 0 and it must be less than the current value for F71 (Saved in variable currentValueAdd).
So I loop through both layers iterating through all the possible combinations trying to find the optimal combination that satisfies the above conditions. Sometimes I open excel and it works fine, other times it doesn’t work at all. The results are very erratic.
Private Sub OptimizeFI_Click()
Dim waiveLoop As Integer
Dim comissionLoop As Integer
Dim finalWaive As Integer
Dim finalCommission As Integer
Dim currentValueAdd As Double
Dim F71 As Range, D41 As Range
currentValueAdd = Range("$F$71").Value ' <-- This is the cell I am trying to optimize.
For waiveLoop = 0 To 7
Range("$D$40").Value = waiveLoop ' <-- one of the levers in changing cell F71
For comissionLoop = 0 To 7
Range("$D$41").Value = comissionLoop ' <-- a second lever in changing cell F71
If Range("$F$71").Value > 0 And Range("$F$71").Value < currentValueAdd Then
finalWaive = Range("$D$40").Value
finalComission = Range("$D$41").Value
Range("$E$27").Value = finalWaive * 0.05
Range("$E$28").Value = finalComission * 0.05
currentValueAdd = Range("$F$71").Value
End If
Next comissionLoop
Next waiveLoop
Range("$D$40").Value = Range("$E$27") / 0.05
Range("$D$41").Value = Range("$E$28") / 0.05
Range("$F$8").Value = currentValueAdd
End Sub
Of. Course.
BTW, there is no “Excel VBA”, there is just VBA. And it is virtually equivalent to VB.
Very probably. There is no immediate problem to see in your code, though.