麻烦传递一个不连续的命名范围到一个自定义函数

我一直在四处寻找堆栈溢出来解决这个问题的时间比我现在所承认的要长。

这里是我的:在工作表中,我有一堆不连续的单元格,我需要检查特定文本的存在。 我已经创build了一个简单的函数来做到这一点,当我手动定义范围(在代码中)时,可以轻松地完成此操作。

然而,当我程序化地创build一个命名范围(同时做其他的东西),然后尝试传入命名的范围,函数永远不会执行。

我知道命名范围正在创build,因为我有自动格式化,也可以引用范围与Excel公式接受不连续范围(SUM和什么)。

以下是我的代码的相关部分:

Function customProcess1(NamedRange As Range) As Long For Each c in NamedRange.Cells ... Next c End Function 

在Excel中,当我input公式为“= customProcess1(A1:A2)”时,我得到我的号码后,函数运行。 当我input“= customProcess1(NamedRange)”我的function甚至不会执行。

再次,我使用文档中已经定义的命名范围。 我可以在名称pipe理器中观察名称,它引用适当的单元格,我可以使用接受非连续范围的公式中的范围等。我无法弄清楚如何让我的工作命名范围进入我的函数。

当我把公式作为“= customProcess1(”NamedRange“)”该函数执行,但由于命名的范围不是“”NamedRange“”但是“NamedRange”它无法将对象设置为范围(对象未find)。 我试着把命名的范围作为一个string,但是,如果我不把名字放在名字周围,它甚至不会运行这个函数。 所以然后我试着传递一个带引号的string,并把函数里面的引号关掉,但是这样也不能很好地工作。

总之,我只想在我的自定义函数中获得不连续的命名范围。 一旦我这样做,一切都是金色的。

有人有主意吗? 我不知道为什么这是一件很麻烦的事情。

我不知道为什么你正在尝试的东西不起作用,也没有真正的时间来研究这部分,但你可以做到以下几点:

 Function customProcess1(NamedRange As String) As Long Dim TheRange As Range Set TheRange = Range(NamedRange) For Each c in TheRange.Cells ... Next c End Function 

希望这可以帮助。

调整你的UDF(),我编码:

 Function customProcess1(NamedRange As Range) As Long For Each c In NamedRange.Cells customProcess1 = customProcess1 + c.Value Next c End Function 

然后我把名字Mike分配给单元格B6,C8,D10,并在这些单元格中放置值。 然后我把公式:

 =customProcess1(Mike) 

在一个单元格中,得到以下内容:

在这里输入图像说明

注意:

我没有使用= customProcess(“Mike”)