使自定义函数返回任何内容 - 不是0,不是空字符串,而是什么都没有

Woo*_*tty 7 excel vba excel-2007 excel-vba user-defined-functions

我有一个自定义函数可以从电子表格的单元格中调用,我想在某些情况下不返回任何内容.换句话说,我希望将具有我的函数的单元格视为一个空单元格(除非该函数返回一个值).

我能做到的最接近的是返回一个空字符串"".不幸的是,具有零长度字符串的单元格不会被COUNTA或视为空COUNTBLANK,并且会破坏数学公式(例如1 + "" = #VALUE).

我尝试返回任何内容的大部分都会导致返回0,但用户可能会对此有不同的解释.

我该怎么办?

到目前为止尝试过:

Returns 0:
    result = null
    result = VbEmpty
    result = Range("SomeCellKnownToBeEmpty")

Returns error:
    result = Nothing
Run Code Online (Sandbox Code Playgroud)

答:我现在有理由相信这是不可能的,可以做的最好的事情就是解决它.

解决方案:

  • 返回一个字符串"-blank-"并使用VBA宏删除任何单元格的内容"-blank-".一种奇怪的方法,但符合我的需要.我这样做是准备我的出版工作簿的一个步骤.
  • 返回空字符串并显式获取工作表中的其他公式以将其""视为空白.
  • 返回并显示0:返回0并使用自定义格式隐藏0.

Cub*_*ase 5

你遇到的麻烦是UDF 总会提供一个值,所以如果你有一个带有公式的单元格,它就不能是空白或空的,这就是你想要的.

我想你可能需要尝试处理其他公式中的零或空字符串,或者将更大的进程转换为完全VBA.

有关更多阅读,请参阅:http://excel.tips.net/T002814_Returning_a_Blank_Value.html

编辑:可能重复:从Excel中的公式返回空单元格