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语句也是如此。