在不同工作表上的数据集中findVBA

来自StackOverflow的粉丝,

我试图使用。find与VBA,但不断得到一个相当恼人的错误。 确切地说,这是错误424,对象需要。

试图学习,但一直在这个错误挣扎超过24小时,而现在似乎无法find我的错。 我还在下面添加了一些截图,以便您自己查看数据。

屏幕截图说明:截图1是我的第一个数据集,其中我希望从截屏2的F列填充H列,我的通用调用方在第一个数据集的D列和第二个数据集的B列中find。

我的问题总结:有错误424,下面的数据所需的对象。 请帮我看看我做错了什么,因为我想从中学习,并且一直在为这个错误奋斗了24小时以上。

Dim sht As Worksheet, sht2 As Worksheet Set sht = Sheets("16-Compliancy-Rebuild") Set sht2 = Sheets("OpmerkingBackup") Dim Dept_Row As Long Dim Dept_Clm As Long Dim rng As Range Table1 = sht.Range("D85:D750") Table2 = sht2.Range("B3:B750") Dept_Row = sht.Range("H85").Row Dept_Clm = sht.Range("H85").Column For Each cl In Table1 Set rng = Table2.Find(cl, SearchDirection:=xlPrevious, LookAt:=xlWhole) If Not rng Is Nothing Then sht.Cells(Dept_Row, Dept_Clm) = sht2.Cells(rng.Row, 6).Value End If Dept_Row = Dept_Row + 1 Next cl End Sub 

第一个数据集,我想填充列H

第二个数据集,我想要列F和第一个数据集填充列H

正如SJR提到的那样 – 你并没有使用Set for the Tables。 但是,一般来说,尝试编写代码,在顶部写入Option Explicit – 然后您应该强制声明所有variables。

因此,你需要这样的东西:

 Dim Table2 as Range Dim Table1 as Range 

然后,一旦他们被定义为范围,错误会更明显,将是91

 Option Explicit Public Sub TestMe() Dim Table1 As Range Table1 = Range("A1:A5") End Sub 

错误91是通过添加Set Table1 = Range("A1:A5")