输入时逐步提示信息_第1页
输入时逐步提示信息_第2页
输入时逐步提示信息_第3页
输入时逐步提示信息_第4页
输入时逐步提示信息_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、技巧1输入时逐步提示信息用户在录入数据时,比如在工作表中输入产品名称,除了希望有所有产品名称的下拉列表供选择外,更希望能逐步给出提示信息。比如在输入一两个字符后把符合条件的数据筛选 出来供选择,最好是中英文、拼音首字母、大小写能混合查询,如输入“LJ”或“六角后所有以“六角”开头的产品名称都筛选到列表中供选择,这将大大提高录入速度和正确率。为了达到这一目的,首先在工作簿需要有如图1-1所示的基础数据表。ABC1产品名称辅助列2六角螺栓V1jls-l3六角螺栓-2ljls-24六角螺栓-31jls-55钢铁发黑剂gtfhj6四蝶形螺母fvdxlm7101不锈钢螺栓lOlbxgls102不锈辆嫁栓

2、102bxgls9方头螺栓ftls10带撵螺栓dsls11塑制卜螺栓slls-112塑未卜螺栓slls-213塑房卜螺栓-3slls-314塑举螺栓Yslls-415槽式螺栓csls16U形性uxs17法兰面螺栓fl mis18连接副/焊钉Ijf/hd19六房螺母AST 021 jlmas-10220六角螺母AST 031jlmas-10321六角螺母AST 041 jlmas-10422开槽螺母kclm23焊接螺母hjlm图1-1基础数据表基础数据表中 A列保存不重复的产品名称,为了能用中英文、拼音首字母、大小写混 合查询,要把产品名称转换成小写的拼音首字母保存在B歹U。步骤1:在VBE窗口

3、单击菜单“插入” 一 “模块”,在代码窗口写入下面的代码。# 001 Public Function LChin(Str As String) As Variant# 002On Error Resume Next# 003Str = StrConv(Str, vbNarrow)#004 If Asc(Str) > 0 Or Err.Number = 1004 Then LChin =""# 005 LChin= WorksheetFunction.VLookup(Str," 口丫 ","a"" 八",&qu

4、ot;b"" 嚓","c""阴","d""翁|","e""发","f"" 揆","g"" 错","h"" 谷","j"" 咔","k";"垃",T;"嘴","m";" 旃","n&

5、quot;;" 噢","o";" 姐","p";" 七","q";" 喧","r";" 任","s"" 他","t"" ","w""夕","x""Y","y""币","z",2)# 006 End F

6、unction代码解析:自定义LChin函数,该函数把中文字符转换为拼音首字母。步骤2:在VBE窗口双击Sheet2表,在代码窗口写入下面的代码。# 001Private Sub Worksheet_Change(ByVal Target As Range)# 002Dim i As Integer# 003Dim myStr As String# 004With Target# 005 If .Column <> 1 Or .Count > 1 Then Exit Sub# 006 If WorksheetFunction.CountIf(Sheet2.Range(&quo

7、t;A:A"), .Value) > 1 Then# 007.Value =""# 008MsgBox "不能输入重复的产品名称!", 64# 009Exit Sub# 010End If# 011For i = 1 To Len(.Value)# 012 If Asc(Mid$(.Value, i, 1) > 255 Or Asc(Mid$(.Value, i, 1) < 0 Then# 013myStr = myStr & LChin(Mid$(.Value, i, 1)# 014Else# 015myStr =

8、myStr & LCase(Mid$(.Value, i, 1)# 016End If# 017Next#018.Offset(, 1).Value = myStr#019 End With#20 End Sub代码解析:工作表的Change事件,当A列输入不重复的产品名称后,转换成小写的字母保存在B列的单元格中,便于以后的查询。第11行代码,设置事件触发的条件,只有在A列输入产品名称后才触发Change事件。第12行到第16行代码,使用工作表 CountIf函数检查输入的产品名称是否重复。第17行到第23行代码,字符的转换过程。首先检查是否是中文字符,如果是使用自 定义函数LChin

9、转换成小写拼音首字母。如果是大写的英文字母使用LCase函数转换成小写字母。第24行代码,将转换后的字符保存到B歹U。步骤3:基础数据表完成后,在工作表“录入表”中添加一个文本框控件和一个列表框 控件。在VBE窗口中双击Sheet1表,写入下面的代码。# 001 Private Sub Worksheet_SelectionChange(ByVal Target As Range)# 002 Dim i As Integer# 003 If Target.Count = 1 Then# 004 If Target.Column = 1 And Target.Row > 1 Then# 0

10、05 With Me.TextBox1# 006.Visible = True# 007.Top = Target.Top# 008.Left = Target.Left# 009.Width = Target.Width# 010.Height = Target.Height# 011.Activate# 012End With# 013With Me.ListBox1# 014.Visible = True# 015.Top= Target.Top# 016.Left= Target.Left + Target.Width# 017.Width = Target.Width# 018.He

11、ight = Target.Height * 5#019For i= 2 To Sheet2.Range("A65536").End(xlUp).Row#020.AddItem Sheet2.Cells(i, 1).Value#004 End IfNext#021# 022End With# 023Else# 024Me.ListBoxl.Clear# 025Me.TextBoxI =""# 026Me.ListBox1.Visible=False# 027Me.TextBox1.Visible = False# 028End If# 029 End I

12、f# 030 End Sub代码解析:工作表的SelectionChange 事件,当用户选定工作表A列第2行以下的单个单元格时,设置文本框和列表框的Visible为True,使它们成为可见的,并设置其外观,同时给列表框加载列表项。当用户选定其他列的单元格时隐藏文本框和列表框控件。步骤4:在设计模式下双击文本框,在代码窗口写入下面的代码。# 001 Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)# 002Dimi As Integer# 003DimLangua

13、ge As Boolean# 004DimmyStr As String# 005 Me.ListBox1.Clear# 006WithMe.TextBox1# 007 For i = 1 To Len(.Value)# 008 If Asc(Mid$(.Value, i, 1) > 255 Or Asc(Mid$(.Value, i, 1)< 0 Then# 009Language = True# 010myStr = myStr & Mid$(.Value, i, 1)# 011Else# 012myStr = myStr & LCase(Mid$(.Value

14、, i, 1)# 013End If# 014 Next# 016 With Sheet2#017 For i = 2 To .Range("A65536").End(xlUp).Row# 018 If Language = True Then# 019If Left(.Cells(i, 1).Value, Len(myStr) = myStr Then# 020Me.ListBox1.AddItem .Cells(i, 1).Value# 021End If# 022 Else# 023If Left(.Cells(i, 2).Value, Len(myStr) = my

15、Str Then# 024Me.ListBox1.AddItem .Cells(i, 1).Value# 025End If# 026 End If# 027 Next# 028 End With# 029 End Sub代码解析:文本框的KeyUp事件,在文本框输入查询条件时筛选符合条件的数据加载到列表框。第3行代码,声明变量Language为Boolean数据类型,在下面的代码中使用Language的值判断输入的是否为中文。第5行代码,使用 Clear方法删除列表框所有的列表项,语法如下:object.Clear参数object是必需的,一个有效的对象。注意如果列表框绑定了数据,Clear

16、方法将会失败。第6行到第15行代码,判断文本框输入的是否为中文字符。如果是中文字符,将变量Language赋值为True ,并把文本框中的字符赋给变量myStr。如果是英文字符则转换成小写字母后赋变量 myStr。第16行到第29行代码,如果变量Language的值为True ,在基础数据表的 A列中使用Left函数查找与文本框字符相符的单元格并加载到列表框,否则就在B列查找。步骤5:在设计模式下双击文本框,在代码窗口写入下面的代码。# 001 Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger,ByVal S

17、hift As Integer)# 002 If KeyCode = vbKeyReturn Then# 003 Sheet1.ListBox1.Activate#5 End Sub代码解析:文本框的KeyDown事件,当用户在文本框中输入完成,列表框中已显示所需的内容后 按回车键后选择列表框。步骤6:在设计模式下双击列表框,在代码窗口写入下面的代码# 001 Private Sub ListBox1_GotFocus()# 002On Error Resume Next# 003ListBox1.ListIndex = 0# 004 End Sub代码解析:列表框的GotFocus事件,当用

18、户在文本框中输入完成按回车键后,选定列表框中第1个条目,方便用户进行下一步操作。# 001 Private Sub ListBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger,ByVal Shift As Integer)# 002 If KeyCode = vbKeyReturn Then# 003 ActiveCell.Value = ListBox1.Value# 004Me.ListBox1.Clear# 005Me.TextBox1 =""# 006Me.ListBox1.Visible=False# 007Me.TextBox1.Visible = False# 008 End If# 009 End Sub代码解析:列表框的KeyDown事件,当用户在列表框中按下回车后将列表框选中的条目写入到活 动工作表的单元格中,同时清空文本框和列表框内容后隐藏,准备下一次录入。# 001 Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)# 002 ActiveCell.Value = ListBox1.Value# 003 M

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论