在不同工作表上的数据集之间的VBA中查找

时间:2017-07-19 10:12:16

标签: excel vba excel-vba excel-2013

StackOverflow的粉丝,

我正在尝试使用.Find与VBA,但仍然遇到一个相当恼人的错误。确切地说,它是错误424,需要对象。

尝试学习,但现在已经超过24小时一直在努力解决这个错误,似乎无法找到我的错。我在下面添加了一些截图,以便您自己查看数据。

屏幕截图说明:Screenshot1是我的第一个数据集,其中我想要从Screenshot2填充列F的列H,我的公共调用者在第一个数据集的D列和第二个数据集的B列中找到。

我的问题摘要:遇到错误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

First dataset where i want to populate Column H

Second Dataset where i want to take column F and populate Column H in first Dataset

1 个答案:

答案 0 :(得分:1)

提到SJR - 您没有使用Set for the Tables。 但是,一般来说,尝试编写代码,在顶部编写Option Explicit - 然后您应该被迫声明所有变量。

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

Dim Table2 as Range
Dim Table1 as Range

然后,一旦将它们定义为范围,错误就会更明显,并且会91

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

通过添加Set Table1 = Range("A1:A5")

修复错误91