excel vba 在B列中单元格中输入代码,在相应的A列和C列中输入产品名和单位。

想实现的功能:

录入时,填写产品代码,A、C两列自动从产品库中查找,得到相应的产品名和单位。填入同行的相应单元格,如果找不到,提示请输入正确的产品代码。

录入表中A、B、C三列:

产品名 产品代码 计量单位
硅酸盐水泥熟料 3011010 吨
窑外分解窑水泥熟料 3011020 吨
水泥 3011030 吨

产品库中同样是A、B、C三列如同上表。

我是这样写的:哪里不对?
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
irow = ActiveCell.Row
Range("A" & irow).FormulaR1C1 = "=IF(B" & irow & "="""","""",(LOOKUP(B" & irow & ",产品库!B$" & irow & ":B$476,产品库!A$" & irow & ":A$476)))"
End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Range) '如果填写,则改变颜色。
Dim sh As Range, d As Range
With Target
If .Cells.Count = 1 And .Column = 2 And Len(.Text) > 0 Then
Set sh = Sheets("产品库").Range("B:B")
Set d = sh.Find(.Value, LookIn:=xlValues, Lookat:=xlWhole)
If Not d Is Nothing Then
.Offset(0, 1).Value = d.Offset(0, 1).Value
.Offset(0, -1).Value = d.Offset(0, -1).Value
Else
.Offset(0, 1).Value = "找不到该产品编码"
.Offset(0, -1).Value = "找不到该产品编码"
End If
End If
End With
End Sub
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-12
把产品库列重设一下产品代码放在最前面,这样用VLookup就可以实现了
第2个回答  2012-07-12
假设原两列数据为A B 两列添加辅助列,C C1输入公式 =COUNTIF(B:B,A1) 向下填充,然后自动筛选选择C列值大于0的行即可 ...举例:如果两列为B列C...
第3个回答  2012-07-12
你这里错误有好几个.
Target 返回的是一个集合,activecell也一样.
变量不定义就用,虽然不能说是错误,但这样不好.
range前面没对象,这是谁的range?或者你这样用的时候没错,但实际上这么写是错的,
公式没看,不知道有没错.

关键是,单是这么点功能,不用写宏吧?追问

麻烦你给看看好么?

追答

我建议你,直接写公式,别整宏,
在公式里建议用VLOOKUP吧,

相似回答