首页 > 解决方案 > 更改 xlam udf 目标单元格格式

问题描述

我有以下 UDF 来计算在与其他用户共享的 XLAM 文件中创建的 CAGR。

Public Function CAGR(StartValue, EndValue, Periods) As Double
CAGR = (EndValue / StartValue) ^ (1 / Periods) - 1
End Function

我们为此公式添加了自定义 UI 按钮快捷方式。此代码工作正常,生成的结果为十进制格式。

请帮助查找我们如何在此 UDF 中添加以下 2 个功能。

  1. 我们需要目标单元格格式自动更改为该格式 12.3%,目前默认结果显示为 0.12。
  2. 如果选择了多个单元格,我们还需要将周期作为填充单元格的计数。

我知道我们的公式不能改变单元格格式。有没有办法从vba调用公式弹出来实现这一点,这样我们就可以先从代码中改变格式,然后显示公式弹出?

标签: excelexcel-formulavba

解决方案


如您所知,您无法使用公式调用的 UDF 更改任何单元格格式。因此,我能想象自动执行此操作的唯一方法是将Worksheet_Change事件作为解决方法。

因此,当单元格更改为以 开头的公式时,以下内容将更改为 numberformat 为 % =CAGR

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim tCell As Range
    For Each tCell In Target.Cells
        If Left$(tCell.Formula, 5) = "=CAGR" Then 'if formula begins with =CAGR
            tCell.NumberFormat = "#.##%" 'change number format
        End If
    Next tCell
End Sub

推荐阅读