1

有在 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 范围内没有得到任何答案。我哪里错了?

4

2 回答 2

1

我正在写一个答案,因为似乎这个问题正在重新出现。

底线是用户定义函数 (UDF) 在从公式调用时不允许更改其他单元格

解决方案:要自动寻找上帝,请编写 VBA 宏,而不是 UDF

宏可以自动在任何范围或一组单元格上寻找目标。由于宏没有参数,因此有很多方法可以让用户指定单元格集GoalSeek和参数,并将这些路由到Range.GoalSeek方法:

1-设计一个专用的UserForm

2-使用VBA的InputBox函数,或者可能是Excel的Application.InputBox带参数的函数type:=8来输入一个范围。

3- 在工作表上指定一些单元格,用户可以在其中输入参数。

于 2017-07-13T04:40:36.607 回答
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

酷吗?

于 2017-10-27T06:10:28.660 回答