在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中没有得到答案。我哪里错了?
答案 0 :(得分:1)
谢谢大家回答我。经过很长一段时间,我又在这里找到了我的问题。 我碰巧通过使用事件找到了这个问题的解决方案。
在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
凉爽吗?
芸
答案 1 :(得分:0)
我正在写一个答案,因为这个问题似乎正在重新出现。
底线是用户定义的函数(UDF)在从公式调用时不允许更改其他单元格。
解决方案:要自动寻求寻求神,请编写VBA宏,而不是UDF 。
宏可以在任何范围或一组单元格上自动寻找目标。由于宏没有参数,因此有许多方法可以允许用户将单元格集指定为GoalSeek
和参数,并将这些参数路由到Range.GoalSeek
方法:
1-设计专用的UserForm
2-使用VBA的InputBox
功能,或可能使用参数Application.InputBox
的Excel type:=8
功能输入范围。
3-在工作表上专用一些单元格,用户可以在其中输入参数。