Excel 定义不是UDF输入参数之一的依赖项?

Excel 定义不是UDF输入参数之一的依赖项?,excel,vba,input,parameters,dependencies,Excel,Vba,Input,Parameters,Dependencies,简而言之:有没有一种方法可以定义一个不是UDF输入参数之一的依赖项 这是我在这里的第一篇文章。我正在Excel中学习VBA,我看到很多非常有才华的程序员在这里发帖,所以这里是: 我想知道如何根据单元格范围生成UDF,但用户不必输入此单元格范围。一个简单的例子是一个函数,它总是接受单元格“A1”,并将输入连接到A1作为输出。如果该范围是在UDF中静态引用的,那么当用户删除单元格“A1”时,该范围不会变为“#REF” 如果A1=“Hello”,那么输入是“World”,我希望输出是“Hello Wo

简而言之:有没有一种方法可以定义一个不是UDF输入参数之一的依赖项

这是我在这里的第一篇文章。我正在Excel中学习VBA,我看到很多非常有才华的程序员在这里发帖,所以这里是:

我想知道如何根据单元格范围生成UDF,但用户不必输入此单元格范围。一个简单的例子是一个函数,它总是接受单元格“A1”,并将输入连接到A1作为输出。如果该范围是在UDF中静态引用的,那么当用户删除单元格“A1”时,该范围不会变为“#REF”

如果A1=“Hello”,那么输入是“World”,我希望输出是“Hello World”

我想也许我可以在一个函数中调用一个函数,依赖关系树将以此为基础构建(见下文),但是我的测试函数不会更新,除非我更改第一个调用的函数(in1)的输入参数

测试代码:

Public Function test(in1 As String) As String
    test = testdep(in1, Sheets("Sheet1").Range("A1"))
End Function

Private Function testdep(in1 As String, rng As Range)
    testdep = rng.Value & in1
End Function
想法

Edit1:更具体地说,我希望函数在单元格“A1”更改时更新输出值,即使单元格A1不是输入参数。
例如,我现在将A1更改为“blah”而不是“Hello”,然后该值将更新为“blah World”。我会让函数变得易变,但我有很多这样的函数,计算速度变得非常混乱。

您不需要指定任何参数。像这样的东西很有魅力:

Public Function CombineHelloAndWorld() As String
    CombineHelloAndWorld = Range("A1") & " " & Range("A2")
End Function
假设您在
[A1]
中有“Hello”,在
[A2]
中有“World”。在单元格
[A3]
中,您编写
=CombineHelloAndWorld()
,它会给您“Hello World”


另外,如果
Application.Calculation
设置为
xlCalculationAutomatic
,则如果您更改
[A1]
[A2],它将自动更改
[A3]

我知道只有两种方法可以在自定义项中使用但不在参数列表中的单元格发生更改时重新计算自定义项:
-使UDF不稳定
-将workbook.forcellCalculation设置为true


这两种解决方案使udf在每次计算时都进行计算:强制完全计算更为激烈-它关闭智能recalc并使每个公式计算

Carlos,这不适用于自动计算,因为没有相关性。第三种方式:可以检查工作表更改事件,查看A1是否是单元格更改,并重新计算相关单元格谢谢@Charles Williams,我将查看工作表更改事件。