UDF返回格式化的数字

时间:2017-03-29 15:58:53

标签: excel vba excel-vba user-defined-functions udf

有时我喜欢在同一个单元格中显示数字和文本。为此,我将单元格自定义格式为0.00"测试",例如具有公式A1但已使用自定义格式=PI()格式化的单元格0.00" test"将返回显示的结果3.14 test

最重要的是,格式的值不会因格式化而保持不变 - 您仍然可以在另一个单元格中执行=A1 * 3并获得结果 - 因为A1是仍然是Pi,只是它的显示已经改变了。

对于返回数值的UDF (在我的情况下,Long,但它可以是任何数字),有没有办法返回一个单元格,以便显示它1种方式,但它的实际值(我相信VBA中的.Value2)是一个数字,而不是文本。

我在VBA中尝试了Format(,但它返回了一个文本字符串。我只是手动格式化我的单元格,但是正如您从下面的代码中看到的那样,格式化取决于中间结果(我试图返回用计算时间格式化的值)。 / p>

UDF_RESULT = Format(valueResult.Length, IIf(tElapsed < timeout, "0" & " """ & Round(tElapsed, 2) & "s""", "0"))

这对于宏来说很容易,但在UDF中它更难。我可以在模块级别声明所有中间值,然后Worksheet_Calculate()宏可以访问这些值并应用自定义格式,但UDF包装的方法会更好。

1 个答案:

答案 0 :(得分:5)

没有

您将单元格的与其数字格式混淆。 UDF可以计算,并且单元格可以根据需要自由格式化该值。

因此,如果UDF返回一个数字,则该单元格的值是该函数的结果 - 数字。

只需根据需要格式化单元格。函数不会格式化任何内容。