如何在宏中实现文档?

时间:2015-09-12 14:26:39

标签: excel vba excel-vba

如何在宏中实现文档? 我为excel表编写了一个自定义函数。但是我不知道如何实现文档,所以如果在函数栏中输入函数,则说明会像excel中的标准函数一样显示。

是否可以实施该文档?

代码:

Sub Macro1()
'
' Macro1 Macro
'
End Sub

Function AFRONDENONZEKERHEID(n As Double, decimalePlaatsen As Integer, Optional toggle As Boolean = False)
If n = 0 Then
    Exit Function
End If

If toggle Then
    AFRONDENONZEKERHEID = Application.WorksheetFunction.Round(n, decimalePlaatsen)
    Exit Function
End If

Dim afgerond As Double
Dim procentueleAfnamen As Double

afgerond = Application.WorksheetFunction.Round(n, decimalePlaatsen)
procentueleAfnamen = (afgerond - n) / n * 100


If procentueleAfnamen <= -5 Then
    AFRONDENONZEKERHEID = Application.WorksheetFunction.RoundUp(n, decimalePlaatsen)
Else
    AFRONDENONZEKERHEID = afgerond
End If

End Function

(抱歉荷兰变数)

1 个答案:

答案 0 :(得分:4)

  

是否可以实施该文档?

答案是肯定的。

您可以运行例程来注册您的功能。例程将使用Macro.Options method

以下关于如何register a UDF的例子来自John Walkenbach:

  

这是一个简单(但非常有用)的用户定义函数:

Function EXTRACTELEMENT(Txt, n, Separator) As String
     EXTRACTELEMENT = Split(Application.Trim(Txt), Separator)(n - 1)
End Function
  

这是一个VBA宏,它提供EXTRACTELEMENT函数的描述,将它分配给一个函数类别,并为它的三个参数提供描述:

Sub DescribeFunction()
    Dim FuncName As String
    Dim FuncDesc As String
    Dim Category As String
    Dim ArgDesc(1 To 3) As String

    FuncName = "EXTRACTELEMENT"
    FuncDesc = "Returns the nth element of a string that uses a separator character"
    Category = 7 'Text category
    ArgDesc(1) = "String that contains the elements"
    ArgDesc(2) = "Element number to return"
    ArgDesc(3) = "Single-character element separator"

    Application.MacroOptions _
       Macro:=FuncName, _
       Description:=FuncDesc, _
       Category:=Category, _
       ArgumentDescriptions:=ArgDesc
End Sub