1、第一步,先准备好两个表,出仓表和产品信息表。
2、第二步,插入两个ActiveX控件-textbox1和ListBox1。
3、第三步,单击设计模式以退出设计模型。
4、第四步,开始写代码,请看下面的代码。'从下面一行开始复制Public dygdzH As StringPrivate Sub Worksheet_Sele艘早祓胂ctionChange(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.HeightElse Me.ListBox1.Visible = FalseEnd IfEnd SubPrivate Sub TextBox1_Change()Me.ListBox1.Clear'当我们在textbox1里面输入时,获取当前的值dygdz = TextBox1.TextWith Sheets("产品信息表")'获得产品信息表的最后一行hs = .Range("A30000").End(xlUp).RowDim 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 NextEnd WithEnd SubPrivate 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 = FalseEnd Sub最后大功告成。想了解到其他的更好的的实例如自动将单元格内容生成图片,制作加载宏让你的程序方便快速在任意电脑使用,请关注微1信2公3众4号5-ExcelVBA6自7动8办9公10免11费12实13例14与15定16制17。去掉数字