如何将Excel VBA变量指定给定义的名称

如何将Excel VBA变量指定给定义的名称,vba,function,excel,Vba,Function,Excel,如何将VBA函数变量中的值返回到Excel 2010中定义的名称 在下面的示例中,我希望将I作为定义的名称Value\u Count返回Excel,该名称可以在其他公式中重用,例如,如果MsgBox显示7,则在单元格中键入=Value\u Count也将返回7 下面的所有内容都是关于我尝试过的,以及为什么我想这么做。如果这是不可取的,我很高兴知道为什么,如果有更好的方法 Function process_control_F(raw_data As Variant) Dim i As Intege

如何将VBA函数变量中的值返回到Excel 2010中定义的名称

在下面的示例中,我希望将
I
作为定义的名称
Value\u Count
返回Excel,该名称可以在其他公式中重用,例如,如果
MsgBox
显示7,则在单元格中键入
=Value\u Count
也将返回7

下面的所有内容都是关于我尝试过的,以及为什么我想这么做。如果这是不可取的,我很高兴知道为什么,如果有更好的方法

Function process_control_F(raw_data As Variant)
Dim i As Integer
    i = 0
For Each cell In raw_data
    i = i + 1
    Next cell
MsgBox i
End Function
我的目标是让MsgBox返回的值返回到一个定义的名称,该名称可以在其他forumula中重用。但是,我无法获得要显示的值。我尝试过多种形式(太多了,想不起来,更不用说这里的类型了)类似于

Names.Add Name:="Value_Count", RefersTo:=i
我试图做到这一点,而不是返回一吨额外的信息到细胞,只是为了回忆它,因此希望直接返回到一个定义的名称

我使用函数而不是子函数来简化我的使用,但如果这是问题所在,我肯定可以更改类型

我正在创建一个版本的统计控制图。我期望的最终结果是捕获一个数据范围(通常约336个值)并对其应用一系列控制规则(通过VBA),然后将超出控制参数范围的任何值返回到定义的名称,然后可以绘制图表或以其他方式进行操作

我见过(也有版本的)电子表格,它们通过数字辅助列(helper columns)实现了这一点,并生成了图表和汇总统计数据。我试图在VBA的背景下完成它,通过定义的名称调用图表-我只是无法从VBA获取图表的值


使用函数而不是子函数的兴趣在于简化对它的访问。如果我可以直接将函数输入单元格并访问结果,我宁愿不设计(或使用)用户界面。然而,正如让-弗朗索瓦·科贝特所指出的那样,这正迅速成为我实现目标的一条迂回之路。但是,我仍然认为这是值得的,因为从长远来看,我需要执行大量的分析迭代,因此为了节省未来的时间,一些设置时间是值得的。

只需对函数稍作更改,您就可以使用其返回值来完成您想要的:

Function process_control_F(raw_data As Variant) As Integer ' <~~ explicit return type
    Dim i As Integer
    Dim cell As Variant ' <~~~~ declare variable "cell"
    i = 0
    For Each cell In raw_data
        i = i + 1
    Next cell
    process_control_F = i ' <~~~~ returns the value i
End Function

Function process\u control\u F(原始数据作为变量)作为整数“函数的美妙之处在于它返回自己的值XD如果不想返回单元格,为什么要使用定义的名称而不是变量
x=process\u control\u F
如果你设置
process\u control\u F=i
你能澄清一下你想做什么吗?下面的答案看起来还是有点混乱。你能再解释一下大局吗,希望我们不会以一个。如果你在单元格中键入
=Value\u Count
,它怎么知道
原始数据输入应该是什么,以便计算
i
?您提出的将函数返回值推入定义名称的方法对我来说毫无意义。我没办法。当然有办法实现你的目标(我还不清楚),但肯定不是这样。谢谢你的快速回答。我已经根据您添加的内容清理了代码(我是新来的,自学了VBA,这是一个危险的组合)。对于将值驱动到定义的名称,您有什么想法吗?这才是我问题的真正症结所在。谢谢你为什么要这么做?不清楚你想要实现什么。听起来你可能是在用一种非常做作的方式做某事。请编辑您的问题,准确描述您正试图通过此实现的目标。