ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖
楼主: yfxfsj

[求助] 目录树查找问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2025-3-20 15:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 IE_Crayon 于 2025-3-20 15:42 编辑

增加的窗体控件见图片所示,

因为截图,Excel页面不是活动工作簿,没显示找到的树形控件里是选中状态,实际搜索后是选中的。
  1. Private Sub CommandButton1_Click()

  2.     Dim n As Node, ws As Worksheet, r As Range, myreg As Object
  3.     Dim s1 As String, s2 As String
  4.    
  5.     s1 = Me.TextBox1.Text
  6.    
  7.     Set ws = Worksheets("平台企业")
  8.     Set myreg = CreateObject("VBScript.RegExp")
  9.    
  10.     myreg.Global = True
  11.     myreg.IgnoreCase = True
  12.     myreg.Pattern = "\s*\S*" & s1 & "\s*\S*"
  13.    
  14.     For Each n In TreeView1.Nodes
  15.         
  16.         s2 = n.Text
  17.         
  18.         If myreg.Test(s2) Then
  19.         
  20.             n.Selected = True
  21.             TreeView1.SetFocus
  22.             GoTo 结束
  23.             
  24.         End If
  25.     Next n
  26.    
  27.     MsgBox "请输入正确的企业名称!"
  28.    
  29. 结束:

  30. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2025-3-20 15:38 | 显示全部楼层
本帖最后由 IE_Crayon 于 2025-3-20 15:42 编辑


image.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-3-20 17:03 | 显示全部楼层
IE_Crayon 发表于 2025-3-20 15:36
增加的窗体控件见图片所示,

因为截图,Excel页面不是活动工作簿,没显示找到的树形控件里是选中状态, ...

模糊搜索只能搜一个节点,如果能搜到所有节点就非常完美。比如搜“万”,点一下搜索键搜到一个带“万”字眼的企业,如果不是要搜的企业名,再继续搜下一个企业,直到搜到为止,每搜一次,显示一次节点

TA的精华主题

TA的得分主题

发表于 2025-3-20 17:30 | 显示全部楼层
yfxfsj 发表于 2025-3-20 17:03
模糊搜索只能搜一个节点,如果能搜到所有节点就非常完美。比如搜“万”,点一下搜索键搜到一个带“万”字 ...

去掉   GoTo 结束语句试试

TA的精华主题

TA的得分主题

发表于 2025-3-21 09:57 | 显示全部楼层
供参考
Private Sub CommandButton3_Click()
    Dim AA1, aa2
    Dim arr()
    ReDim Preserve arr(1 To TreeView1.Nodes.Count, 1 To 2)
    For i = 1 To TreeView1.Nodes.Count
        If TreeView1.Nodes(i).Text Like "*" & TextBox1.Text & "*" Then
            m = m + 1
            arr(m, 1) = TreeView1.Nodes(i).Text
            arr(m, 2) = TreeView1.Nodes(i).Index
        End If
    Next
   
    If m > 0 Then
        For i = 1 To m
            AA1 = arr(i, 1): aa2 = Val(arr(i, 2))
            TreeView1.Nodes(aa2).Expanded = True
            TreeView1.Nodes(aa2).Selected = True
            TreeView1.SetFocus
            If m > 1 Then
                response = MsgBox(m & "条记录第" & i & "条" & Chr(13) & AA1 & Chr(13) & "是否查看下一条记录?", vbYesNo)
                If response = vbNo Then Exit For
            End If
        Next
    End If
End Sub

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-12-15 03:23 , Processed in 1.023718 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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