微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

VBA Excel UDF保留原始值

如何解决VBA Excel UDF保留原始值

| 我在VBA中有一个UDF非易失性函数,该函数需要初始化一个全局变量(对VSTO的回调)。 此函数驻留在xla或xlam中(行为相同) 如果变量尚不可用,是否可以取消公式的计算? 在Excel自动重新计算模式下(我不想更改它),每次打开工作簿时,Excel都会使用我的函数重新计算单元格,将保存在单元格中的值替换为错误:\“#ARG!\”。 如果变量未初始化,我知道如何返回空单元格,但是有可能返回原始值吗?我用调试器检查它是否已保存在工作簿中。尝试返回“ 0”会导致循环引用。 另外,如果VBA代码嵌入在工作簿(xlsm)中,或者工作簿为xls格式,则不会调用函数(预期的行为)。但是,将工作簿转换为xlsx会导致打开工作簿后如所述重新计算单元格。     

解决方法

        您可以通过在XLM或C XLL中将该功能标记为宏函数来执行此操作。在VBA中,我知道的唯一简单的方法是丑陋的修改:如果未初始化变量,则返回Application.Caller.Text。 这有一个主要缺陷,那就是它为您提供了单元格的格式化值,而不是实际值。 否则,您必须建立一种在已关闭但已保存的工作簿中保留单元格值的方法:可能的方案包括使用“定义的名称”,“单元格注释”,注册表,外部文件等,但是我认为没有干净的VBA解决方案。     ,        我最终选择了xlsm方法。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。