快速搜索并辅助输入所需的数据

来源:百度文库 编辑:神马文学网 时间:2024/03/29 13:25:39
这是在EH中看到的一个贴子《求高手作一个数据输入窗口》,其要求为:
这个表是用来输入公司的采购数据的,为了输入的规范,便于把采购单价用公式导入计算销售的表格中,所以必须采用输菜编码的方式录入,但是菜编码太多,很难记住,特别是对于新员工,所以设计了简码,想实现动画图片那样的功能,请高手帮忙!!!
1、如果记得住菜号,在菜号单元格中输入菜号,在输的过程中能逐步提示,如附图动画。
2、如果记不住菜号,就在菜号单元格中输入简码,输入简码过程中能逐步提示,简码会有重复的菜名,按上下箭头能进行选择,输完回车后,显示的还是菜号,而不是简码,如附图动画。
3、如果能做成一个类似EXCEL中的记录单(如图:输单界面)的形式更好。
初步做了一下,实现的效果如下:
“采购录入信息”工作表:选择列A中的任意单元格或者双击列A中的任意单元格将弹出下图所示的输入对话框。

在上方的文本框中输入菜号或者简码后,下方的列表框将自动搜索匹配的数据。
单击下方列表框中的数据后,相关数据将自动输入到“采购录入信息”工作表的列A和列B中,同时其它列的信息自动填充。
主要的程序代码如下:
Option ExplicitDim varData, lOldLen Private Sub UserForm_Initialize()Dim lLast As LongDim rng As Range lLast = wksCP.Range("A" & Cells.Rows.Count).End(xlUp).RowvarData = wksCP.Range("A2:C" & lLast) With Me.lbxInfo.BoundColumn = 1.ColumnCount = 3.List = varDataEnd WithEnd Sub Private Sub txtFind_Change()Dim i As LongDim strFind As String strFind = "*" & UCase(Me.txtFind.Text) & "*" With Me.lbxInfoIf Len(Me.txtFind.Text) < lOldLen Then.List = varDataEnd IflOldLen = Len(Me.txtFind.Text)For i = .ListCount - 1 To 0 Step -1If (Not UCase(.List(i, 0)) Like strFind) And (Not UCase(.List(i, 2)) Like strFind) Then.RemoveItem iEnd IfNext iEnd WithEnd Sub Private Sub lbxInfo_Click()Dim lListIndex As LonglListIndex = Me.lbxInfo.ListIndexActiveCell.Value = Me.lbxInfo.List(lListIndex, 0)ActiveCell.Offset(0, 1).Value = Me.lbxInfo.List(lListIndex, 2)Unload frmEnterInfoEnd Sub Private Sub btnClose_Click()Unload frmEnterInfoEnd Sub
示例下载:
操作演示:
',1)">