Dim tg As Range
Dim FreeInput As Boolean
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Debug.Print "Not tg Is Nothing "; (Not tg Is Nothing)
If Not tg Is Nothing Then
tg.Value = Me.ListBox1.Value
tg.Offset(, 1).Select
End If
End Sub Private Sub ListBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 9 Or KeyCode = 13 Then
Debug.Print "Not tg Is Nothing "; (Not tg Is Nothing)
If Not tg Is Nothing Then
tg.Value = Me.ListBox1.Value
tg.Offset(, 1).Select
End If
Else End If
End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set tg = Target
If Target.Cells.Count = 1 And (Target.Column = 3 Or Target.Column = 4 Or Target.Column = 5) And Target.Row > 3 Then
If Not FreeInput Then
Call ShowTwo
Call TextboxFollow(Target)
Call ListboxFollow(Target)
Call ChangeListboxItems(Me.TextBox1.Text, Target.Column - 2)
Else
Call ShowOne
Me.ListBox1.Clear
Call TextboxFollow(Target)
End If
Else
Call ShowNone
End If
End Sub
Sub ShowTwo()
Me.TextBox1.Visible = True
Me.ListBox1.Visible = True
End Sub
Sub ShowOne()
Me.TextBox1.Visible = True
Me.ListBox1.Visible = False
End Sub
Sub ShowNone()
Me.TextBox1.Visible = False
Me.ListBox1.Visible = False
Me.ListBox1.Clear
End Sub
Sub TextboxFollow(ByVal Rng As Range)
With Me.TextBox1
.Text = Rng.Value
.Visible = True
.Left = Rng.Left
.Top = Rng.Top
.Width = Rng.Width
.Height = Rng.Height
.Activate
End With
End Sub
Sub ListboxFollow(ByVal Rng As Range)
With Me.ListBox1
.Clear
.Visible = True
.Left = Rng.Offset(0, 1).Left
.Top = Rng.Offset(0, 1).Top
.Width = 2 * Rng.Width
.Height = 10 * Rng.Offset(0, 1).Height
End With
End Sub
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'Debug.Print KeyCode
If KeyCode = 69 Then
If Shift = 2 Then
FreeInput = Not FreeInput
If FreeInput Then
MsgBox "切换为任意输入状态"
Call Worksheet_SelectionChange(tg)
Else
MsgBox "切换为提示输入状态"
Call Worksheet_SelectionChange(tg)
End If
End If
ElseIf KeyCode = 9 Or KeyCode = 13 Then
If Not FreeInput Then
If Me.ListBox1.ListCount > 0 Then
Me.ListBox1.Activate
Me.ListBox1.ListIndex = 0
End If
Else
If Not tg Is Nothing Then
tg.Value = Me.TextBox1.Text
tg.Offset(, 1).Select
End If
End If
End If
End Sub
Private Sub TextBox1_Change()
Debug.Print "TextBox1_Change"
Call ChangeListboxItems(Me.TextBox1.Text, tg.Column - 2)
End Sub
Sub ChangeListboxItems(ByVal TextInput As String, ByVal DATA_COLUMN As Long)
'If Len(TextInput) > 0 Then
Debug.Print "ChangeListboxItems now"
With ThisWorkbook.Worksheets("data")
endrow = .Cells(.Cells.Rows.Count, DATA_COLUMN).End(xlUp).Row
Me.ListBox1.Clear
For i = 2 To endrow
If InStr(.Cells(i, DATA_COLUMN).Value, TextInput) > 0 Then
Me.ListBox1.AddItem .Cells(i, DATA_COLUMN).Value
End If
Next i
End With
'End If
End Sub

  

20190227xlVBA辅助输入的更多相关文章

  1. Eclipse输入任意字母或指定字符出现提示框

    Eclipse默认是输入"."的时候会有提示框提示对应的API. 如果想更方便的输入任意字母或者指定的符号出现提示框设置如下: 打开Eclipse,选中“Window”->& ...

  2. C# 自定义控件,日期时间选择输入插件

    权声明:本文为博主原创文章,未经博主允许不得转载. // 为textBox1添加一个日期时间选择控件 DateTimeChoser.AddTo(textBox1); DateTimeChoser.De ...

  3. HTML5权威指南--标签新变化,文件API,拖放API(简要学习笔记一)

    1.标签元素更加语义化   2.内容类型仍然为“text/html”    扩展符仍然为html或者htm.    <1>DOCTYPE 声明<!DOCTYPE html>就可 ...

  4. Sublime Text 3 杂记

    Sublime Text 是一个功能强大的代码编辑器(收费,但可无限期试用).由程序员Jon Skinner于2008年1月份所开发出来,它最初被设计为一个具有丰富扩展功能的Vim.Sublime T ...

  5. 键盘事件keydown、keypress、keyup随笔整理总结(摘抄)

    原文1:http://www.cnblogs.com/silence516/archive/2013/01/25/2876611.html 原文2:http://www.cnblogs.com/leo ...

  6. 基于Jquery Validate 的表单验证

    基于Jquery Validate 的表单验证 jquery.validate.js是jquery下的一个验证插件,运用此插件我们可以很便捷的对表单元素进行格式验证. 在讲述基于Jquery Vali ...

  7. 你有没有试过“闭上眼”使用:京东、滴滴、QQ、支付宝?

    正在看这篇文章的同学,也许是幸运的. 互联网的发展,让我们的生活越来越便利,但这个“我们”,也许并不包括那些残障人士.正常人眼里来说再简单不过的页面操作,对于盲人来说都是不可攀越的高墙.换句话说,越行 ...

  8. Struts个人总结

    编写Struts2第一个程序 Struts2是目前最流行的MVC框架,吸收了传统Struts和WebWork两者的精华,基于Struts2来进行开发可以大大减少开发时间,提高开发效率,并降低后期维护时 ...

  9. Mditor 发布「桌面版」了 - http://mditor.com

    简单说明 Mditor 最早只有「组件版」,随着「桌面版」的发布,Mditor 目前有两个版本: 可嵌入到任意 Web 应用的 Embed 版本,这是一桌面版的基础,Repo: https://git ...

随机推荐

  1. weui开发笔记

    1.标准的weui只是一个css皮肤,当然里面有h5特性所以有一些很好的组件,比如时间选择控件.数字输入框(用于手机号等),在ios——微信中可以做到完美的展示. 2.ui框架以手机移动端为优先显示( ...

  2. [yum] yum加速

    通常,以我对于个人生活和工作品质的要求,并没有这个需求. 因为我的宽带费很贵,独享.就算是centos主站,也很快.但是当你去了一些办公环境恶劣的地方上班的时候, 也难免动用一些小技巧.如下: 装这个 ...

  3. openERP笔记,自定义开发模块

    ##目标 OpenERP模块基本结构 使用模块添加额外的字段(Date Required和Rush Order) 扩展视图, 让OpenERP能够显示新的字段 修改用于OpenERP工作流的可用状态 ...

  4. you-get模块

    You-Get是一个基于 Python 3 的下载工具.使用 You-Get 可以很轻松的下载到网络上的视频.图片及音乐. 转载https://www.cnblogs.com/wangchuanyan ...

  5. docker安装和基础操作

    docker安装 yum install docker 配置镜像下载加速器 curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh ...

  6. [vue]mvc模式和mvvm模式及vue学习思路(废弃)

    好久不写东西了,感觉收生疏了, 学习使用以思路为主, 记录笔记为辅作用. v-if: http://www.cnblogs.com/iiiiiher/p/9025532.html v-show tem ...

  7. MATLAB变量

    序言 在Matlab中,变量名由A~Z.a~z.数字和下划线组成,且变量的第一个字符必须是字母. 尽管变量名可以是任意长度, 但是Matlab只识别名称的前N=namelengthmax个字符, 这里 ...

  8. AngularJS2 环境搭建:

    AngularJS2 基础学习: 参考 mybase 3-26 文件 angular 环境的构建:( 由于 Angular 编写的代码不是 浏览器可以直接运行的,需要经过编译,所以需要构建一个环境) ...

  9. 利用spring实现服务启动就自动执行某些操作的2种方式

    第一种方式,用bean的init-method属性 <bean class="com.emax.paycenter.log.LogBridge" init-method=&q ...

  10. 三、latex源文件的基本结构

    在latex中如何使用中文 首先在选项->设置->构建中默认编译器是不是用的是xelatex 编辑器的默认字体编码是不是UTF-8 在导言区引入ctex宏包