返回用户定义数据类型在Excel单元格(Return a User Defined Data Typ

2019-07-04 02:41发布

我在网上搜索,我已经在这里搜索计算器上的问题,但我一直没能找到解决的办法。

这里是我想要做的:

假设我有一个名为“MyClass的”类模块下面的代码

 Option Explicit Dim var1 as integer 

子初始化(V作为整数)VAR1 = V截止子

功能GetVar1()GetVar1 = VAR1端功能

然后,我有与代码独立的模块UDF

 Function InitializeMyClass(v as integer) as MyClass Dim myvar as MyClass Set myvar = new MyClass Call myvar.Initialize(v) Set InitializeMyClass = myvar End Function 

功能GetMyVar(M为MyClass的)GetMyVar = m.GetVar1()结束函数

现在,在单元格A1我有 “= InitializeMyClass(3)”,并在单元格A2我有 “= GetMyVar(A1)”。 我得到了两个单元#VALUE错误。 当然,这是事实,我想返回一个用户定义的数据类型为单元格A1引起的。 我觉得这应该是可能的,但我不知道怎么样。

编辑:哦,是的,问题是,“有没有给我一个用户定义的数据类型返回到单元格,然后有它可调用从另一个UDF在我上面给的例子的方式,我不知道这是否需要COM或没有。如果是的话,谁知道我如何开始?在理想情况下,如果有人至于怎么运作的一个例子,那将是非常美妙!”

另一个编辑:在这里,我们走了,现在我知道这是可以做到:仔细阅读本说明,它不是定量的,但会给你他们做什么的感觉, http://www.quanttools.com/index.php?option= com_content&任务=视图&ID = 19

Answer 1:

至于其他的答案表明,字面回答你的问题是“不”。 你不能存储超过一个数字,字符串,布尔值,错误等在单元格中的任何其他。 你不能返回比简单的值,例如那些,或阵列,或一个范围参考其他任何东西,从UDF。

但是,你基本上可以做你想要通过传递(和细胞存储)某种手柄到您的对象是一个合法的单元格的值是什么(即“MyClass的:例如:42”)。 这可能是你链接到你的编辑做例子什么。 您的代码必须能够解释句柄值的含义,并保持在内存中本身的对象,虽然。 如果你关心不泄漏对象,这会变得棘手,因为有很多方法来清除或覆盖,如果你使用VBA做这一切,你无法察觉的手柄。

我没有它在我面前的权利,但你可能想看看使用Excel加载开发C / C ++由史蒂夫·道尔顿书财务应用:

http://www.amazon.com/Financial-Applications-using-Development-Finance/dp/0470027975/ref=ntt_at_ep_dpt_1

他讨论的方式与手柄更有力地与XLL插件像这样工作。



Answer 2:

这看起来是一个艰难的cookie。 这是一个有点做作,但你可以做的是有你的初始化函数返回一个名称(字符串),然后名称参数添加到Get函数。 基本上操纵名称字符串,而不是直接的对象。



Answer 3:

嵌套将无法工作,因为MYVAR只要UDF执行完毕超出范围。 实际上有可能是试图在一个工作表函数(肯定有)返回一个对象相关的其他问题,但即使有没有范围的问题仍然会杀了它。

你可以一个指向对象存储在一个细胞,并得到通过该指针的对象,但同样的范围将其杀死。 要获得从指针的对象,那就要保持在范围内,何必存储指针。

显然,你的现实生活中的情况比你的例子更复杂。 所以,答案是否定的,以在细胞中存储的对象,但如果你解释你要完成有可能的替代品是什么。



文章来源: Return a User Defined Data Type in an Excel Cell