无法获得在VBA中工作的语句

我的第一个问题是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中)。

所以我循环遍历所有可能的组合,试图find满足上述条件的最佳组合。 有时候我打开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 

我的第一个问题是excel VBA是否会承认有两个约束条件的if语句

的。 课程。

顺便说一句,没有“Excel VBA”,只有VBA。 它几乎等同于VB。

也许这是我的逻辑问题。

很可能。 不过,在你的代码中看不到任何直接的问题。

如果我没有弄错,那么你的下半年如果情况是不对的? 通过这个我的意思是“范围(”$ F $ 71“)。”值“不会小于”currentValueAdd“。

如果是这种情况,那么我需要重新审视你的逻辑

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

因为这将始终将范围(“$ F $ 71”)的值发送到currentValueAdd,并且当您检查条件

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

单元格F71中的值没有改变,因为您将其转移到variables,所以您的值在F71中的值是相同的,因此您的第二个条件永远不会是真实的。

希望它有一些帮助。