首页 > 解决方案 > Excel 如何将 Worksheetfunction 定义为“全局”对象,以便任何函数都可以通过简单别名访问它

问题描述

目前,每当我想在函数中调用工作表函数时,例如LN, NORMDIST我必须编写类似的东西

    Function f()
    Dim wsf 
    Set wsf = Application.WorksheetFunction
    'only then can I call them by wsf.func, like
    Dim v
    v = wsf.Ln(2.0)   'Natural log of 2
    f = v
    End Function

这看起来很乏味。有没有办法在WorksheetFunction全局或模块范围内定义对象,以便该模块内的任何函数都可以直接调用它?

(老实说,我发现必须通过WorksheetFunction对象访问大量内置函数的整个想法真的很烦人)

标签: excelvba

解决方案


这将是一件奇怪的事情(即一个With … EndWith块将是调用多个函数而不重复关键字的常用方法)。

但是,理论上,它可以这样做:

Option Explicit

Private wsf As WorksheetFunction

Public Sub Test()       
    Set wsf = Application.WorksheetFunction
    Debug.Print wsf.Sum(1, 2, 3)
    Debug.Print wsf.Average(1, 2, 3)        
End Sub

推荐阅读