简单的VBA功能。当我尝试在我的工作表中使用它时,无论我做什么,我得到的都是"该名称无效"。我没有想法。
Sub FindABV(temperature)
With Worksheets("Sheet1")
.Range("C28").GoalSeek _
Goal:=temperature, _
ChangingCell:=.Range("B28")
End With
FindABV = .Range("B28").Value
End Sub
我已尝试创建一个新模块以便将其放入。无需更改。 并且代码编辑器没有错误指示。
答案 0 :(得分:0)
Sub过程执行一个任务,然后将控制权返回给调用代码,但它不会向调用代码返回一个值。
查看更多here。
这就是说,你不能设置一个等于某个程序的程序:
FindABV = .Range("B28").Value
因为该名称无效(您不能说某个程序等于某个值,但它没有意义)。您可能希望使用Function返回目标搜索者计算的该单元格的值,具体取决于您通过该函数传递的输入temperature
:
Function FindABV(temperature)
With Worksheets("Sheet1")
.Range("C28").GoalSeek _
Goal:=temperature, _
ChangingCell:=.Range("B28")
End With
FindABV = .Range("B28").Value '<-- return the value
End Function
但是,请注意:如果=FindABV(temperature)
位于Sheet1.Range("B28")
,您将拥有循环引用,因为您的函数将尝试获取其自身的值。
答案 1 :(得分:0)
您的代码无法提供您想要的结果。如果您希望Function
使用的值与B28
和C28
中存储的值不同,那么您必须更多地将其写为:
Public Function FindABV(goalCell As Range, changeCell As Range, temperature As Double)
goalCell.GoalSeek Goal:=temperature, ChangingCell:=changeCell
FindABV = changeCell
End Function
但这在任何情况下都无关紧要,因为GoalSeek
实际上会更改ChangingCell
中Excel
如果从{{1}内调用Function
将不会执行的值}}