Excel出仓单输入联想功能
1、第一步,先准备好两个表,出仓表和产品信息表。


2、第二步,插入两个ActiveX控件-textbox1和ListBox1。

3、第三步,单击设计模式以退出设计模型。

4、第四步,开始写代码,请看下面的代码。
'从下面一行开始复制
Public dygdzH As String
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'欢迎转载文章及关注微信公众号 -ExcelVBA自动办公免费实例与定制
'作者-无知不自由
'**************************************************************
'获取单机单元格的地址
dygdz = Target.Address
'获取单机单元格的行数,以备后面使用
dygdzH = Target.Row
'判断单机的单元格时否在输入产品编码的那一列
If dygdz Like "*B*" Then
' 显示ListBox1,并调整位置
Me.ListBox1.Visible = True
Me.ListBox1.Left = Target.Left + Target.Width
Me.ListBox1.Top = Target.Top
' 清除ListBox1的值
Me.ListBox1.Clear
' TextBox1,并调整位置
Me.TextBox1.Text = ""
Me.TextBox1.Visible = True
Me.TextBox1.Left = Target.Left
Me.TextBox1.Top = Target.Top
Me.TextBox1.Width = Target.Width
Me.TextBox1.Height = Target.Height
Else
Me.ListBox1.Visible = False
End If
End Sub
Private Sub TextBox1_Change()
Me.ListBox1.Clear
'当我们在textbox1里面输入时,获取当前的值
dygdz = TextBox1.Text
With Sheets("产品信息表")
'获得产品信息表的最后一行
hs = .Range("A30000").End(xlUp).Row
Dim STR As String
srz = dygdz
For i = 1 To hs
cpbh = .Range("b" & i)
' 判断包含输入值的产品编码
If UBound(Split(cpbh, srz)) > 0 Then
cpmc = .Range("c" & i)
kcsl = .Range("d" & i)
dw = .Range("e" & i)
dj = .Range("f" & i)
STR = cpbh & "-" & cpmc & "-" & kcsl & "-" & dw & "-" & dj
' 将产品信息合并成一条值后放入到ListBox1
Me.ListBox1.AddItem STR
End If
Next
End With
End Sub
Private Sub ListBox1_Click()
' 单击ListBox1的对应行后,将对应行分割成数组
xzz = Split(ListBox1.Value, "-")
' 填充内容
Range("B" & dygdzH) = xzz(0)
Range("c" & dygdzH) = xzz(1)
Range("e" & dygdzH) = xzz(3)
Range("f" & dygdzH) = xzz(4)
' 隐藏控件
Me.ListBox1.Visible = False
Me.TextBox1.Visible = False
End Sub
最后大功告成。
想了解到其他的更好的的实例如自动将单元格内容生成图片,制作加载宏让你的程序方便快速在任意电脑使用,请关注微1信2公3众4号5-ExcelVBA6自7动8办9公10免11费12实13例14与15定16制17。去掉数字