Question

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
Was it helpful?

Solution

My first question is whether excel VBA will recognize an if statement with two constraints

Of. Course.

BTW, there is no "Excel VBA", there is just VBA. And it is virtually equivalent to VB.

Maybe its a problem with my logic.

Very probably. There is no immediate problem to see in your code, though.

OTHER TIPS

If im not mistaken then the second half of your if condition is never true right? By this i mean that "Range("$F$71").Value" is never less than "currentValueAdd".

If this is the case then i you need to relook into your logic of

    currentValueAdd = Range("$F$71").Value

as this will always send the value of Range("$F$71") to currentValueAdd and when you are checking the condition

    Range("$F$71").Value < currentValueAdd

the value in cell F71 has not changed since you transferred it to the variable and so your value in the variable is the same as the value in F71 thus your second condition will never be true.

Hope it has been of some help.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top