Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3115|回复: 4

[待分类] 逐步提示

[复制链接]
发表于 2012-4-26 20:21 | 显示全部楼层 |阅读模式

Rem VBA知识点:窗体与表格的交互


Private Sub UserForm_Activate()
    TextBox1.SetFocus  '激活窗体时默认进入文字框,且指定窗体显示在活动单元格右方
    Me.Left = ActiveCell.Offset(0, 1).Left + 30
End Sub
'在文字框中按下键盘时触发事件
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    On Error Resume Next  '防错,避免活动单元格在第一行且Offset向上偏移时出错
    If KeyCode = 27 Then Unload Me  '如果按下Esc键则关闭窗体
   '在文字框中空的状态下按下箭头和上箭都作用于单元格,相应地移动激动单元格。如果文字框中有字符则直接移向列表框这不需要设置,是默认的功能
    If Len(TextBox1) = 0 Then
        If KeyCode = vbKeyDown Then ActiveCell.Offset(1, 0).Activate
        If KeyCode = vbKeyUp Then ActiveCell.Offset(-1, 0).Activate
    End If
End Sub
'在文字框中键弹起的瞬间触发事件,即打字时文字显示在文字框中时
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If Len(TextBox1.Text) > 0 Then  '如果已输入字符
        ListBox1.Clear  '清除原有列表
        '利用循环查对比输入的字符与词条工作表中A列的词条,相似则加入列表框
        For i = 1 To Sheets("词条").Cells(Rows.Count, 1).End(xlUp).Row
            If Sheets("词条").Cells(i, 1) Like TextBox1.Text & "*" Then
                ListBox1.AddItem Sheets("词条").Cells(i, 1)
            End If
        Next i
    Else
        ListBox1.Clear '否则清除列表框(指在文字框中按下删除键时)
    End If
    DoEvents    '移交控件权,使用后面的两句代码可以正常执行
    ListBox1.Height = 9 * ListBox1.ListCount + 10  '其中9表示字体大小,以字体乘以行数则表示列表框刚好适应项目的多少,但加10会更美观
    Me.Height = 9 * ListBox1.ListCount + 75 '窗体随列表框的高度而变化
End Sub
'当文字框接受焦点时触发事件,按下TAB键时,焦点从列表框转向文字框时
Private Sub TextBox1_Enter()
    On Error Resume Next
    If Len(TextBox1) > 0 Then  '如果文字框有文字
        ActiveCell = TextBox1.Text  '将文字框的值输出到单元格
        ActiveCell.Offset(1, 0).Activate  '激活下一单元格
        TextBox1 = ""  '清空列表框与文字框
        ListBox1.Clear
    End If
End Sub

Private Sub ListBox1_Click()
Me.TextBox1 = Me.ListBox1.Value
End Sub

本帖子中包含更多资源

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

x

评分

参与人数 1 +21 收起 理由
无聊的疯子 + 21 感谢分享

查看全部评分

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-4-26 20:31 | 显示全部楼层
回复

使用道具 举报

发表于 2012-4-26 21:21 | 显示全部楼层
学习,可是一直忙着都没有时间实践一下啊!
回复

使用道具 举报

发表于 2013-4-18 14:11 | 显示全部楼层
学习了、、、备用中、、、、、
回复

使用道具 举报

发表于 2013-7-13 20:52 | 显示全部楼层
老师你的逐步提示确实不错,你可以再增加一个功能吗?就是用方向键而不是用鼠标选择ListBox1逐步提示需要的内容,最后用回车键把需要的内容返回到TextBox1,这样就更人性化了。
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-6-1 06:33 , Processed in 0.229088 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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