我的第一个问题是因为我有收到,如果封闭在一个代码问题的Excel VBA是否会承认if语句有两个限制,即有麻烦if语句在VBA工作
IF Range(somecell).value > 0 AND Range(anothercell).value < 100 Then:
execute code here
语句触发,当我知道两个约束都满足我正在运行的脚本。也许这是我的逻辑问题。
我已经包含代码,请看看您是否可以指出我的逻辑或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
一方面的评论是,我已经设置了代码设置,以便将最佳值保存在另一个单元格中,然后在脚本完成循环后将它们传回D40和D41。 – Andy
为什么使用单元格来存储临时值(而不是变量)?另外,如果它“不起作用”会发生什么?您是否尝试过使用调试器执行代码? – Tomalak
Tomalak通过“不起作用”,我的意思是它提出了一个没有意义的答案,并满足if语句。所以代码不会中断。当脚本完成循环后,当前结构最适合在箱子中显示最佳解决方案,并在这些最佳杠杆中设置杠杆。 – Andy