Мой первый вопрос: распознает ли Excel VBA оператор if с двумя ограничениями, т.е.
IF Range(somecell).value > 0 AND Range(anothercell).value < 100 Then:
execute code here
Потому что у меня проблема с получением кода, включенного в оператор if для запуска, когда я знаю, что оба скрипта выполняются в скрипте, который я запускаю. Возможно это проблема с моей логикой.
Я включил код, пожалуйста, посмотрите, можете ли вы указать на какие-либо ошибки в моей логике или VBA.
Справочная информация (я также включил некоторые в код):
Есть два рычага, которые меняют ячейку F71 (D40 и D41). Требования состоят в том, чтобы F71 было больше 0, и оно должно быть меньше текущего значения для F71 (сохранено в переменной currentValueAdd).
Таким образом, я перебираю оба слоя, перебирая все возможные комбинации, пытаясь найти оптимальную комбинацию, которая удовлетворяет вышеуказанным условиям. Иногда я открываю Excel, и он работает нормально, а иногда - вообще не работает. Результаты очень ошибочны.
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