如何在Excel用户功能中使用目标搜索功能?

问题描述 投票:1回答:2

在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中没有得到答案。我哪里错了?

excel vba seek excel-udf
2个回答
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

这很酷吗?

Y UN


0
投票

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

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

解决方案:要自动寻求寻求神,请编写VBA宏,而不是UDF。

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

1-设计专用的UserForm

2-使用VBA qazxsw poi函数,或者可能使用参数InputBox的Excel的qazxsw poi函数输入范围。

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

© www.soinside.com 2019 - 2024. All rights reserved.