VBA 1004错误从其他工作表拉取数据
一个奇怪的对象/用户定义的1004错误,我有..也许我只是俯视的东西。
我正在寻找一个非常类似于我在另一张纸上使用过的代码。 本质上,工作表是仪表板,用户使用的唯一单元格是活动页面中的“b1”,因为这允许用户从下拉菜单中进行select。 在更改信息时,应参考ClientDB表find正确的行,然后从中获取信息。
我以前使用非常类似的代码,没有顺利。只是想知道是否有什么我可能忽略?
这是我的代码:
Private Sub Worksheet_Change(ByVal Target As Range) Dim DBWS As Worksheet, cws As Worksheet, sws As Worksheet Dim aa As Integer, bb As Integer, cc As Integer, dd As Integer Set DBWS = ActiveWorkbook.Sheets("ClientDB") Set cws = ActiveWorkbook.Sheets("ClientBoard") aa = DBWS.Columns("a").Find(what:=cws.Range("b1").Value, after:=DBWS.Range("a1")).Row bb = Range("a" & aa).Row 'contact Range("b3").Value = DBWS.Cells(bb, "H").Value 'number Range("b4").Value = DBWS.Cells(bb, "I").Value 'email Range("b5").Value = DBWS.Cells(bb, "J").Value
等等..等等。
额外的注意事项:如果我运行error handling程序来绕过1004错误,它将最终在一些error handling程序周期后填充
任何帮助将不胜感激!
谢谢!
松鸦
考虑DBWS.Columns("a")...
更改为DBWS.Columns("a:a")...
a
不是一个有效的参考。
正如@SickDimesion提到的,你必须将Columns("a")
更改为DBWS.Columns("a:a")
或DBWS.Columns(1)
在做这个改变之后,你可能仍然会得到一个错误,因为你直接试图获得这一行。 如果.Find
没有返回匹配怎么办?
考虑改变你的代码
Dim aCell as Range set aCell = DBWS.Columns(1).Find(what:=cws.Range("b1").Value, _ after:=DBWS.Range("a1")) If Not aCell Is Nothing Then aa = aCell.Row Else Msgbox "Value Not Found" Exit Sub End If
你不符合上下文的条件
bb = Range("a" & aa).Row
Excel不知道这个Range引用的是哪个表。 其他不合格的Range语句也是如此。