在MS excel中有使用目标搜索的方法如下代码。它工作正常。
Sub GSeek()
With Worksheets("Sheet1")
.Range("H18").GoalSeek _
Goal:=.Range("H21").Value, _
ChangingCell:=.Range("G18")
End With
End Sub
而且我想用一个函数来做目标寻求如下。
Function fSeek(a As Range, b As Range, c As Range)
a.GoalSeek Goal:=b.Value, ChangingCell:=c
fSeek = "Ok"
End Function
但是,代码安静地工作,并且在范围c中没有得到答案。我哪里错了?
谢谢大家回答我。经过很长一段时间,我又在这里找到了我的问题。我碰巧通过使用事件找到了这个问题的解决方案。
在Microsoft Excel Object-Sheet1(Sheet1)中,我们只能编写以下代码:
'----------------------------------------------
' Goal seeking when the worksheet changes.
'----------------------------------------------
' Here we want to do goal seek for Range("H18")
' with the Goal cell as Range("H21")
' and the changing cell as Range("G18").
'
Private Sub Worksheet_Change(ByVal Target As Range)
Range("H18").GoalSeek Goal:=Range("H21"), ChangingCell:=Range("G18")
End Sub
这很酷吗?
Y UN
我正在写一个答案,因为这个问题似乎正在重新出现。
底线是,当从公式调用时,不允许用户定义函数(UDF)更改其他单元格。
解决方案:要自动寻求寻求神,请编写VBA宏,而不是UDF。
宏可以在任何范围或一组单元格上自动寻找目标。由于宏没有参数,因此有许多方法可以允许用户将单元格集指定为GoalSeek
和参数,并将这些方法路由到Range.GoalSeek
方法:
1-设计专用的UserForm
2-使用VBA qazxsw poi函数,或者可能使用参数InputBox
的Excel的qazxsw poi函数输入范围。
3-在工作表上专用一些单元格,用户可以在其中输入参数。