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
答案 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")