Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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
Vba 当目标=0时跳过goalseek计算_Vba_Excel - Fatal编程技术网

Vba 当目标=0时跳过goalseek计算

Vba 当目标=0时跳过goalseek计算,vba,excel,Vba,Excel,我制作了一个goalseek函数,它可以运行多个列并自动进行计算,即使在目标字段中选择的值等于0时也是如此 每当我的工作表中有0时,我希望sub跳过计算并转到下一列 尝试添加If cell.Value>0和cell.Value是您的编码风格导致了问题。如果将If语句放在一行上,并且下划线字符表示这一点,那么只有该行中的条件语句将构成If子句 所以在你的代码中 If cell.Value <= cell.Offset(-1).Value Then _ cell.Offset(2) = 1 E

我制作了一个goalseek函数,它可以运行多个列并自动进行计算,即使在目标字段中选择的值等于0时也是如此

每当我的工作表中有0时,我希望sub跳过计算并转到下一列


尝试添加If cell.Value>0和cell.Value是您的编码风格导致了问题。如果将If语句放在一行上,并且下划线字符表示这一点,那么只有该行中的条件语句将构成If子句

所以在你的代码中

If cell.Value <= cell.Offset(-1).Value Then _
cell.Offset(2) = 1 Else _
cell.Offset(2) = -1
cell.Goalseek Goal:=cell.Offset(-1).Value, ChangingCell:=cell.Offset(1)
这使得发生的事情更加明显。因此,您需要的代码是:

If cell.Value > 0 Then
    If cell.Value <= cell.Offset(-1).Value Then
        cell.Offset(2) = 1
    Else
        cell.Offset(2) = -1
    End If
    cell.Goalseek Goal:=cell.Offset(-1).Value, ChangingCell:=cell.Offset(1)
End If

你能不能把你的IF语句显示得和模块中的完全一样?你的方法似乎是正确的,所以可能是语法方面的问题,也可能只是一个你不应该这样使用的注释;创建单独的行并使用END IF,这样就不那么容易混淆了。我的直觉告诉我,你的另一个If语句也有类似的问题导致了这个错误。Hi@Grade'Eh'Bacon。我不知道你的问题是什么意思。我像往常一样在模块中运行代码。依赖于第63行和第64行的单元格均为零。外部循环失败:子目标Seek Dim rng As Range Set rng=选择集rng=此工作簿。工作表SPB_input.RangeB62:rng中每个单元格的BP62。如果单元格.Value为0,则rng中每个单元格的rng.Offset1.Value=0。如果单元格单元格。值编辑您的问题,而不是添加代码的评论,请努力阅读。我的意思是,你有一个IF语句,你说你试图插入,但我们看不出你是如何尝试插入的。避免IF-THEN-ELSE语句的连接将大大有助于您;这不如花时间写单独的行,全部缩进,以END IF.Hi Ambie结尾。谢谢你的回复。我运行了代码,它仍然在为第62行中有0的列的单元格中添加0。
If cell.Value <= cell.Offset(-1).Value Then
    cell.Offset(2) = 1
Else
    cell.Offset(2) = -1
End If
cell.Goalseek Goal:=cell.Offset(-1).Value, ChangingCell:=cell.Offset(1)
If cell.Value > 0 Then
    If cell.Value <= cell.Offset(-1).Value Then
        cell.Offset(2) = 1
    Else
        cell.Offset(2) = -1
    End If
    cell.Goalseek Goal:=cell.Offset(-1).Value, ChangingCell:=cell.Offset(1)
End If