设为首页收藏本站|繁體中文

Excel 技巧网

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

查看: 3707|回复: 4

[Excel VBA] 如何实现文本框内按方向键选择列表框的选项?

[复制链接]
发表于 2011-5-6 09:04:25 | 显示全部楼层 |阅读模式
  • 署名作者: amulee
  • 版权声明: 版权归本站与作者共有 除本站官方外非作者本人转载须经许可并注明出处
  • 本文来自:
  • 引用作品:
  • 适用版本: 2010 2007 2003以前版本 
  • 语言环境: 简体中文
  • 学习方法: 掌握Excel技巧的关键是动手操作 | 下载 ≠ 知识


  • 免费注册成为本站会员,享用更多功能,结识更多Office办公高手!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    本帖最后由 amulee 于 2011-5-6 10:43 编辑

    Q:如何实现文本框内按方向键选择列表框的选项?
    A:这个功能在很多软件内都有,在文本框内输入关键字进行模糊查询,可以直接利用方向键来选择列表框中的查询结果,按回车后可以直接完成输入。这样可以提高输入速度。
    如动画所示:
    TextBox和ListBox联动.gif

    代码参考如下:
    1. Private Sub CommandButton1_Click()
    2.     Application.ActiveCell = ListBox1.List(ListBox1.ListIndex)
    3.     Application.ActiveCell.Offset(1, 0).Activate
    4.     TextBox1.SetFocus
    5.     TextBox1.Text = ""
    6. End Sub
    7. '变化
    8. Private Sub TextBox1_Change()
    9.     Dim KeyWd$, ArrYS
    10.     KeyWd = TextBox1.Text
    11.     If KeyWd = "" Then Exit Sub
    12.     ArrYS = Sheet2.Range("A1:A38")
    13.     With ListBox1
    14.         '清空
    15.         .Clear
    16.         For i = 1 To UBound(ArrYS)
    17.             If ArrYS(i, 1) Like KeyWd & "*" Then
    18.                 .AddItem ArrYS(i, 1)
    19.             End If
    20.         Next i
    21.         If .ListCount > 0 Then
    22.             '选中第一项
    23.             .ListIndex = 0
    24.         End If
    25.     End With
    26. End Sub
    27. '在文本框内直接按上下键移动选择项
    28. Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    29.     Select Case KeyCode
    30.         Case vbKeyUp
    31.             With ListBox1
    32.                 If .ListIndex > 0 Then .ListIndex = .ListIndex - 1
    33.             End With
    34.         Case vbKeyDown
    35.             With ListBox1
    36.                 If .ListIndex < .ListCount - 1 Then .ListIndex = .ListIndex + 1
    37.             End With
    38.     End Select
    39. End Sub
    40. Private Sub UserForm_Initialize()
    41.     CommandButton1.Default = True
    42. End Sub
    复制代码
    模糊查询中Textbox和Listbox联动.rar (20.04 KB, 下载次数: 21)
    发表于 2012-10-2 01:04:53 | 显示全部楼层
    学习了
    回复 支持 反对

    使用道具 举报

    发表于 2017-2-6 22:43:11 | 显示全部楼层
    为何我的窗口打不开呢,没有看见动画所示窗体,那位老师知道吗? 指点一下,谢谢
    回复 支持 反对

    使用道具 举报

    发表于 2018-7-10 23:12:01 | 显示全部楼层
    你好,请问一下这个能再优化一下,不一定输首字,从中间输入任一字可搜索吗
    回复 支持 反对

    使用道具 举报

    发表于 3 天前 | 显示全部楼层
    谢谢   分享
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    Excel技巧网的会员探讨问题仅代表其个人意见,与网站的立场无关。任何违反国家和地方相关法律法规的言论,本站有义务协助政府相关部门追究发言者的责任!
    本站中非注明转载文章与案例的版权为作者与Excel技巧网共有。若非原文作者,本站之外任何单位或个人未经允许,不得将其用于商业用途。
    若非原文作者,任何形式的非商业性转载必须获得Excel技巧网或作者允许,并注明作者和出处。
    会员发表的帖子如涉及版权纠纷,须自行负责。详情请参考注册时的网站服务条款。
    本站特聘法律顾问:沈学律师

    Archiver|手机版|Excel技巧网 ( 闽ICP备08107682号-2 ) | 闽公网安备 35020302032608号  

    GMT+8, 2018-7-23 11:40

    Powered by Discuz! X3.3

    © 2001-2017 Comsenz Inc.

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