Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 无法在VBA中使用if语句_Excel_Vba_Solver - Fatal编程技术网

Excel 无法在VBA中使用if语句

Excel 无法在VBA中使用if语句,excel,vba,solver,Excel,Vba,Solver,我的第一个问题是excel VBA是否会识别带有两个约束的if语句,即 IF Range(somecell).value > 0 AND Range(anothercell).value < 100 Then: execute code here 如果范围(某个单元格).value>0,范围(另一个单元格).value

我的第一个问题是excel VBA是否会识别带有两个约束的if语句,即

IF Range(somecell).value > 0 AND Range(anothercell).value < 100 Then:
   execute code here
如果范围(某个单元格).value>0,范围(另一个单元格).value<100,则:
在这里执行代码
因为当我知道我正在运行的脚本中满足了这两个约束时,我在获取包含在if语句中的代码以触发时遇到了问题。也许是我的逻辑有问题

我已经包含了代码,请查看是否可以指出我的逻辑或VBA中的任何错误。 背景信息(我在代码中也包含了一些):

有两个控制杆可更改单元格F71(D40和D41)。要求F71大于0,并且必须小于F71的当前值(保存在变量currentValueAdd中)

所以我在这两层中循环,迭代所有可能的组合,试图找到满足上述条件的最佳组合。有时我打开excel,它工作正常,但有时根本不工作。结果非常不稳定

Private子优化器单击()
将循环设置为整数
作为整数的循环
Dim finalWaive作为整数
Dim finalCommission作为整数
Dim CurrentValue添加为双精度
尺寸F71作为范围,D41作为范围
currentValueAdd=范围($F$71”)。值'
我的第一个问题是excel VBA是否会识别带有两个约束的if语句

的。当然

顺便说一句,没有“Excel VBA”,只有VBA。它实际上相当于VB

也许是我的逻辑有问题


很可能。但是,代码中没有立即出现的问题。

如果我没有弄错,那么If条件的后半部分永远不会为真,对吗?我的意思是“范围($F$71”).Value”永远不小于“currentValueAdd”

如果是这样的话,我想你需要重新审视你的逻辑

    currentValueAdd = Range("$F$71").Value
因为当您检查条件时,这将始终将范围值($F$71)发送到currentValueAdd

    Range("$F$71").Value < currentValueAdd
范围($F$71”)。值
单元格F71中的值在您将其传输到变量后没有更改,因此变量中的值与F71中的值相同,因此第二个条件永远不会为真


希望对您有所帮助。

一个侧面的评论是,我的代码设置方式是将最佳值保存在另一个单元格中,然后在脚本完成循环后将其传输回D40和D41。为什么使用单元格存储临时值(而不是变量)?还有,如果它“不起作用”会发生什么?你有没有试过用调试器逐步调试你的代码?Tomalak说的“不工作”,我的意思是它给出了一个没有意义的答案,并且满足if语句。所以代码没有被破坏。当前的结构最适合在一个框中显示最佳解决方案,并在脚本循环完成后将杠杆设置为这些最佳杠杆。嗨,Tomalak,是的,我觉得VBA不太可能处理if语句中的多个约束。我会继续看代码,但还没有弄明白什么。谢谢你的帮助Hi android,谢谢你查看,不看电子表格就无法知道这一点,但是每次你更改$D$40或$D$41时,$F$71单元格都会发生变化,所以当你循环并更改这些单元格时,F71也会发生变化。