zoukankan      html  css  js  c++  java
  • 列出一个工作簿中所有已使用的自定义函数

    需要添加对VB项目的信任

    Sub UDFSOFACTIVEWORKBOOK()
    Dim sh As Worksheet, r As Range, dic As Object, i As Long, temp As String, vbcomp, s() As String, UDF As String
    For i = 1 To ActiveWorkbook.VBProject.VBComponents.Count
    Set vbcomp = ActiveWorkbook.VBProject.VBComponents(i)
    If vbcomp.Type = 1 Then temp = temp & vbCrLf & vbcomp.CodeModule.Lines(1, 65536)
    Next
    s = Split(temp, vbCrLf)
    temp = ""
    For i = 0 To UBound(s)
    If s(i) Like "Function * As *" Then temp = temp & "@" & "=" & Trim(Split(Split(s(i), "(")(0), "Function")(1)) & "(" '--->All functions with or without parameters
    Next
    Set dic = CreateObject("scripting.dictionary")
    For Each sh In Sheets
    For Each r In sh.UsedRange
    If r.HasFormula Then
    If InStr(temp, "@" & Split(r.Formula, "(")(0)) > 0 Then
    UDF = r.Formula & "udf"
    Else
    UDF = ""
    End If
    If Not dic.exists(r.Formula) Then dic.Add r.Formula, UDF
    End If
    Next
    Next
    Debug.Print "All functions used in activesheet" & vbCrLf & String(50, "-") & vbCrLf & Join(dic.keys, vbCrLf) & vbCrLf & vbCrLf '列出一个工作簿中所有函数
    Debug.Print "All user define functions used in activesheet" & vbCrLf & String(50, "-") & vbCrLf & Replace(Join(Filter(dic.items, "udf"), vbCrLf), "udf", "") '列出一个工作簿中所有已使用的自定义函数
    Set dic = Nothing
    End Sub 

  • 相关阅读:
    关于线程间通信的条件变量
    vim学习相关链接
    CString与输入输出流对象问题。
    CRect类 的介绍
    在vs中char类型的实参与LPCWSTR类型的形参类型不兼容怎么解决?
    ADO Recordset 对象链接
    FIND_IN_SET的简单使用
    html meta标签作用
    github新建托管项目及上传项目
    Javascript编码规范
  • 原文地址:https://www.cnblogs.com/fengju/p/6336295.html
Copyright © 2011-2022 走看看