更改xlam udf目标单元格格式

时间:2018-06-05 11:04:18

标签: excel-vba excel-formula vba excel

我在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. 如果有多个单元格,我们还需要Periods来计算填充单元格数 地选择。
  3. 我知道公式不能改变单元格格式。有没有办法从vba调用公式弹出窗口来实现这一点,这样我们就可以先从代码中更改格式然后显示公式弹出窗口?

1 个答案:

答案 0 :(得分:1)

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

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

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