ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
123
返回列表 发新帖
楼主: WYS67

[求助] 怎样在多个模块里,快速查找和定位指定的自定义函数或sub过程代码所在位置?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-2-8 14:39 | 显示全部楼层
WYS67 发表于 2020-2-8 13:38
首先,非常感谢老师数次费心编写代码!

    感觉用了这个新修改的代码,刷下去许多名称【包括许多不带 ...

无测试,如果不对可改为.ProcCountLines(n, k) - 1,见楼上最新

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-8 15:32 | 显示全部楼层
lss001 发表于 2020-2-8 14:39
无测试,如果不对可改为.ProcCountLines(n, k) - 1,见楼上最新

经一个个对照检测,您这次编写的代码完全正确!

再次感谢老师!!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-8 18:26 | 显示全部楼层
lss001 发表于 2020-2-8 12:17
见楼上更正即可!!!

1.gif

老师:如上面截图所示,我想在sheet2的A:B里显示代码结果,点击宏按钮后,其它都能正确显示,就是A3始终显示Sheet1
  请问:需要修改下面哪个地方的代码,才能使A3显示sheet2?

Sub hhh()
    On Error Resume Next '以下添加引用
    Dim ws As Object, vn$, kx$, ky$, i&
    SendKeys "%tms%e~" 'excel启用所有宏
    SendKeys "%tms%v~" 'excel信任对工程对象模型的访问
    For i = 1 To 100: DoEvents: Next
    Set ws = CreateObject("wscript.Shell")
    vn = Excel.Application.Version 'office版本 //Word
    kx = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & _
        vn & "\Excel\Security\VBAWarnings" '//Word
        'office2016及以上/VBAWarnings,其它版本/Level
    ky = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & _
        vn & "\Excel\Security\AccessVBOM" '//Word
    If ws.regread(kx) <> 1 Then ws.RegWrite kx, 1, "REG_DWORD"
    '1启用所有宏/2禁用且通知/3禁用无签宏/4禁用不通知 //宏安全性
    If ws.regread(ky) = 0 Then ws.RegWrite ky, 1, "REG_DWORD"
    SendKeys "~" '0关闭/1开启 //信任对工程对象模型的访问
    Application.CommandBars.FindControl(ID:=3627).Execute
    Set myr = ThisWorkbook.VBProject.References.AddFromGuid _
    ("{000204EF-0000-0000-C000-000000000046}", 4, 2)
    Set myr = ThisWorkbook.VBProject.References.AddFromGuid _
   ("{0002E157-0000-0000-C000-000000000046}", 5, 3)
    Call mjsyqqs
End Sub

Sub mjsyqqs()
    Dim ct As Object, n$, k&, d&
    [a:b] = "": [a1] = "工程名": [b1] = "过程名": x = 2
    Set xx = GetObject(ThisWorkbook.Path & "\自定义.xlsm")
    For Each ct In xx.VBProject.VBComponents
        With ct.CodeModule
            Cells(x, 1) = .Name
            d = .CountOfDeclarationLines + 1
            Do While d < .CountOfLines
                n = .ProcOfLine(d, k)
                If InStr(.Lines(.ProcStartLine(n, k), .ProcCountLines(n, k) - 1), "Private") = 0 Then
                    If n <> "" Then i = i + 1: Cells(i + x - 1, 2) = n
                    y = xx.FullName & "#" & ct.CodeModule.Name & "." & n
                    Sheet1.Hyperlinks.Add Cells(i + x - 1, 2), y
                End If
                d = .ProcStartLine(n, k) + .ProcCountLines(n, k) + 1
            Loop
        End With
        If d <= 2 Then x = x + 1 Else x = x + i: i = 0
    Next
End Sub


TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-8 19:20 | 显示全部楼层
lss001 发表于 2020-2-7 22:34
Sub mjsyqqs()
    Dim ct As Object, n$, k&, d&
    [a:b] = "": [a1] = "工程名":  = "过程名": x = ...

1.gif

代码如下:

Sub hhh()
    On Error Resume Next '以下添加引用
    Dim ws As Object, vn$, kx$, ky$, i&
    SendKeys "%tms%e~" 'excel启用所有宏
    SendKeys "%tms%v~" 'excel信任对工程对象模型的访问
    For i = 1 To 100: DoEvents: Next
    Set ws = CreateObject("wscript.Shell")
    vn = Excel.Application.Version 'office版本 //Word
    kx = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & _
        vn & "\Excel\Security\VBAWarnings" '//Word
        'office2016及以上/VBAWarnings,其它版本/Level
    ky = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & _
        vn & "\Excel\Security\AccessVBOM" '//Word
    If ws.regread(kx) <> 1 Then ws.RegWrite kx, 1, "REG_DWORD"
    '1启用所有宏/2禁用且通知/3禁用无签宏/4禁用不通知 //宏安全性
    If ws.regread(ky) = 0 Then ws.RegWrite ky, 1, "REG_DWORD"
    SendKeys "~" '0关闭/1开启 //信任对工程对象模型的访问
    Application.CommandBars.FindControl(ID:=3627).Execute
    Set myr = ThisWorkbook.VBProject.References.AddFromGuid _
    ("{000204EF-0000-0000-C000-000000000046}", 4, 2)
    Set myr = ThisWorkbook.VBProject.References.AddFromGuid _
   ("{0002E157-0000-0000-C000-000000000046}", 5, 3)
    Call mjsyqqs
End Sub

Sub mjsyqqs()
    Dim ct As Object, n$, k&, d&
    [a:b] = "": [a1] = "工程名": [b1] = "过程名": x = 2
    Set xx = GetObject(ThisWorkbook.Path & "\自定义.xlsm")
    For Each ct In xx.VBProject.VBComponents
        With ct.CodeModule
            Cells(x, 1) = .Name
            d = .CountOfDeclarationLines + 1
            Do While d < .CountOfLines
                n = .ProcOfLine(d, k)
                If InStr(.Lines(.ProcStartLine(n, k), .ProcCountLines(n, k) - 1), "Private") = 0 Then
                    If n <> "" Then i = i + 1: Cells(i + x - 1, 2) = n
                    y = xx.FullName & "#" & ct.CodeModule.Name & "." & n
                    Sheet1.Hyperlinks.Add Cells(i + x - 1, 2), y
                End If
                d = .ProcStartLine(n, k) + .ProcCountLines(n, k) + 1
            Loop
        End With
        If d <= 2 Then x = x + 1 Else x = x + i: i = 0
    Next
End Sub


老师:如图所示,需要把查询结果存放在C:D列,1.修改[a:b] = "": [a1] = "工程名": [b1] = "过程名": x = 2[c:d] = "": [c1] = "工程名": [d1] = "过程名": x = 2
       2.修改Cells(x, 1) = .Name为Cells(x, 3) = .Name;
       3.还需修改哪个地方,才能使原先显示在B列的自定义函数名称显示在D列里

TA的精华主题

TA的得分主题

发表于 2020-2-8 22:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 lss001 于 2020-2-8 22:50 编辑
WYS67 发表于 2020-2-8 19:20
代码如下:

Sub hhh()

参考15楼》》》'存放至Sheet2!c:d列

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-9 00:28 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
lss001 发表于 2020-2-8 22:38
参考15楼》》》'存放至Sheet2!c:d列

感谢老师!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-26 08:45 , Processed in 0.042922 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表