ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Excel VBA > 如何用VBA求各工作表内的公式引用了哪些其它表的数据源

如何用VBA求各工作表内的公式引用了哪些其它表的数据源

作者:绿色风 分类: 时间:2022-08-18 浏览:94
楼主
xmyjk
Q:如何用VBA求各工作表内的公式引用了哪些其它表的数据源?

A:
  1. Sub Test2()
  2. Application.ScreenUpdating = False
  3. Dim Rng As Range, r As Range, d, sh As Worksheet, ds, snm As String, nm, i%
  4. Set d = CreateObject("scripting.dictionary")
  5. Set ds = CreateObject("scripting.dictionary")

  6. For Each sh In Sheets
  7.    If sh.Name Like 0 Or Val(sh.Name) + 0 <> 0 Then
  8.       snm = "'" & sh.Name & "'!"
  9.    Else
  10.       snm = sh.Name & "!"
  11.    End If
  12.    ds(snm) = sh.Name
  13. Next
  14. nm = ds.keys

  15. On Error Resume Next
  16. For Each sh In Sheets
  17. If sh.Name <> "想法" Then
  18.     Set r = sh.UsedRange.SpecialCells(xlCellTypeFormulas)
  19.     If Not r Is Nothing Then
  20.        For Each Rng In r
  21.           For i = 0 To UBound(nm)
  22.              If nm <> sh.Index - 1 Then
  23.                 If InStr(Rng.Formula, nm(i)) > 0 Then
  24.                    d("表""" & sh.Name & """中的公式含有非本表关联,该关联表的表名为:" & ds(nm(i))) = ""
  25.                 End If
  26.              End If
  27.           Next
  28.        Next
  29.     End If
  30. End If
  31. Set r = Nothing: Set Rng = Nothing
  32. Next

  33. Application.ScreenUpdating = True
  34. Worksheets("想法").Select
  35. Worksheets("想法").UsedRange.Clear
  36. [A1].Resize(d.Count, 1) = Application.Transpose(d.keys)

  37. End Sub

根据工作表公式求得数据来源的工作表名.rar
2楼
JOYARK1958
謝謝提供學習下載中
3楼
纵鹤擒龙水中月
学习了

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap