- 在线时间
- 1459 小时
- 经验
- 12631
- 威望
- 22
- 性别
- 男
- 最后登录
- 2012-2-4
- 注册时间
- 2005-12-12
- 阅读权限
- 100
- UID
- 127116
- 积分
- 16511
- 帖子
- 12283
- 精华
- 1
- 评选资格
- False
29419财富
63鲜花
63技术
- 积分排行
- 15
- 帖子
- 12283
- 精华
- 1
- 分享
- 0
|
发表于 2007-5-29 10:06:29
|显示全部楼层
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 |
|