有时,我喜欢在同一个单元格中显示数字和文本。为此,我自定义了将单元格格式化为0.00“test”之类的内容,例如带有公式A1
的单元格=PI()
,但是使用自定义格式0.00" test"
格式化的单元格将返回显示的3.14 test
结果。
重要的是,单元格的值通过格式保持不变--您仍然可以在另一个单元格中执行=A1 * 3
并获得结果--因为A1
的值仍然是Pi,只有它的显示发生了变化。
用于返回数字值的UDF (在我的例子中,Long
,但它可能是任何数字),是否有一种返回单元格的方法,使其以1方式显示,但它的实际值(在VBA中的.Value2
)是一个数字,而不是文本。
我在VBA中尝试过Format(
,但是它返回一个文本字符串。我只需要手动设置单元格的格式,但正如您从下面的代码中可以看到的那样,格式化取决于中间结果(我试图返回计算所用时间格式化的值)。
UDF_RESULT = Format(valueResult.Length, IIf(tElapsed < timeout, "0" & " """ & Round(tElapsed, 2) & "s""", "0"))
这对于宏来说很容易,但是在UDF中就更难了。我可以在模块级别声明所有中间值,然后Worksheet_Calculate()
宏可以访问这些值并应用自定义格式,但是UDF包装的方法要好得多。
发布于 2017-03-29 08:06:29
不是的。
您混淆了单元格的值和它的数字格式。UDF可以计算一个值,单元格可以根据需要对该值进行格式化。
因此,如果一个UDF返回一个数字,那么单元格的值就是该函数的结果--一个数字。
只需按需要格式化单元格即可。函数不格式化任何东西。
https://stackoverflow.com/questions/43098569
复制相似问题