ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 6432|回复: 10

[求助] 在textbox中输入账号、收款单位或开户行中的任一关键字,在listbox中显示对应信息

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-1-19 11:04 | 显示全部楼层 |阅读模式
老师:
如何用VBA实现:在textbox中输入账号、收款单位或开户行中的任一关键字,在listbox中显示对应信息,双击或用回车键输入到此处的E列、F列和H列,效果如动画演示一样
模糊输入动画.gif
求助.jpg

建行批量转账制单listbox.zip

37.83 KB, 下载次数: 77

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-1-19 18:36 | 显示全部楼层
试着勉强做了一个,可是显示速度非常慢,哪位老师帮忙优化一下呀?谢谢了
搜狗截图130119_1.jpg

如何提高listbox下拉列表的显示速度.zip

47.05 KB, 下载次数: 77

TA的精华主题

TA的得分主题

发表于 2013-1-19 20:47 | 显示全部楼层
ugyun 发表于 2013-1-19 18:36
试着勉强做了一个,可是显示速度非常慢,哪位老师帮忙优化一下呀?谢谢了

1. 帐号数据太多,运行中要将每个汉字转换为拼音,需要时间。
2. 为何相同帐号要重复二三十次?
3. 要提高速度有2个途径:
  a. 先将汉字转为拼音,放在辅助列中,模糊输入时不再转换;
  b. 减少模糊查询字段。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-1-19 22:08 | 显示全部楼层
本帖最后由 ugyun 于 2013-1-19 22:38 编辑
zjdh 发表于 2013-1-19 20:47
1. 帐号数据太多,运行中要将每个汉字转换为拼音,需要时间。
2. 为何相同帐号要重复二三十次?
3. 要提 ...


谢谢提示,汉字转换拼音是可以不用的,没多大意义,账号重复是我测试数据用的,老师,能否用字典实现呢?

另外注释以下拼音转换是去掉了,但点其它位置时好像也是筛选状态,能不能帮忙看看如何正确去掉拼音
'        If LG Then
   '        Else
'            N = PINYIN(S)
'        End If

TA的精华主题

TA的得分主题

发表于 2013-1-20 17:51 | 显示全部楼层
如何提高listbox下拉列表的显示速度.rar (37.37 KB, 下载次数: 150)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-1-20 17:27 | 显示全部楼层
zjdh 发表于 2013-1-20 09:40
Private Sub TextBOX1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    Dim  ...

再麻烦请教一下,每次刚一打开表格时,点E列时右边下拉列表listbox中总为空,输入关键字后或者按一下退格键再点E列其他单元格时下拉列表才有内容,能不能一打开时就显示全部内容呢?

TA的精华主题

TA的得分主题

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

Private Sub TextBOX1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    Dim I&, t%, k&, N$, Arr1()
    Me.ListBox1.Clear
    arr2 = Array("账号", "收 款 单 位", " ", "开户行")
    k = k + 1
    ReDim Arr1(1 To 4, 1 To k)
    For I = 1 To 4
        Arr1(I, k) = arr2(I - 1)
    Next
    For I = 1 To UBound(Arrsj)
        N = Arrsj(I, 1) & " " & Arrsj(I, 2) & " " & Arrsj(I, 4)
        If InStr(N, UCase(Me.TextBox1.Value)) Then
            k = k + 1
            ReDim Preserve Arr1(1 To 4, 1 To k)
            For t = 1 To 4
                Arr1(t, k) = Arrsj(I, t)
            Next
        End If
    Next I
    If t = 0 Then Exit Sub
    Me.ListBox1.List = Application.Transpose(Arr1)
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2016-3-30 08:51 | 显示全部楼层
zjdh 发表于 2013-1-20 09:40
Private Sub TextBOX1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    Dim  ...

请教:可否限制选择ListBox1中的首行?谢谢!

TA的精华主题

TA的得分主题

发表于 2016-3-30 13:00 | 显示全部楼层
鄂龙蒙 发表于 2016-3-30 08:51
请教:可否限制选择ListBox1中的首行?谢谢!

添加语句
Private Sub ListBOX1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    If Me.ListBox1.ListIndex = 0 Then Exit Sub
    ActiveSheet.Unprotect
    For I = 0 To 3
        ActiveCell.Offset(0, I) = Me.ListBox1.List(Me.ListBox1.ListIndex, I)
    Next
    Me.ListBox1.Clear
    Me.TextBox1 = ""
    Me.ListBox1.Visible = False
    Me.TextBox1.Visible = False
    ActiveCell.Offset(, 1).Select
    ActiveSheet.Protect
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-12-5 15:49 | 显示全部楼层
这个很好,能否做个完整的,
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-9-24 12:23 , Processed in 0.047887 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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