Excel VBA:对于每个循环返回值而不是范围

Excel VBA: For Each loop returning Values not Ranges

我正在尝试使用 For Each 循环来相互检查两个单元格范围,寻找匹配值。

我的问题是 For Each 循环似乎迭代单元格的值(即 John Doe、Mark Jones 等)而不是范围值(即 D3、D4 等)。 ).这似乎与我读过的所有文档背道而驰。

lastRowRads = Worksheets("Rads").Range("D3").End(xlDown).Row
lastRowData = Worksheets("Data").Range("D5").End(xlDown).Row
ReferenceRange = "D5:D" & lastRowData
TestRange = "D3:D" & lastRowRads
For Each rcell In Worksheets("Data").Range(ReferenceRange).Cells
    For Each tcell In Worksheets("Rads").Range(TestRange).Cells
        If rcell.Value = tcell.Value Then
           Worksheets("Data").Range(rcell).Offset(0, -1).Value = Worksheets("Rads").Range(tcell).Value
        End If
    Next tcell
Next rcell

我得到的错误是 "Run-time error '1004: Application-define or object-defined error",调试器突出显示了 If...Then 语句中的语句。我的猜测是它不接受 rcelltcell 作为范围引用。

我已经使用 MsgBox 进行了一些故障排除,以查看 tcellrcell 在循环中的值是什么,它们应该是什么 rcell.Valuetcell.Value。我试过在循环之前将它们定义为 Dim tcell As RangeDim rcell As Range,但这并没有解决问题。

更改此行:

Worksheets("Data").Range(rcell).Offset(0, -1).Value = Worksheets("Rads").Range(tcell).Value 

收件人:

rcell.Offset(0, -1).Value = tcell.Value 

它们是范围变量,因此已经具有 sheet 和它们固有的范围。