range.rows.count在循环中不更新

很久以前的潜伏者,第一次海报。

预期的function是:对于列表A中的每个项目,扫描列表B并识别匹配。 将这些匹配添加到一个范围,然后在匹配计数> 0时输出。

这虽然是循环的第一次,但在所有进一步的迭代中,当WorkRng被正确地添加(我可以输出到一个单元格,它具有所有的数据)时,WorkRng.Rows.Count保持在1。

Dim pasteRng as Range Dim WorkRng as Range For i = 2 To LastRow Set WorkRng = Sheets("Output").Range("A1:G1") For j = 2 To outputCount If Worksheets("Output").Cells(j, 8).Value = Worksheets("Vendor List").Cells(i, 1).Value Then 'this line correctly identifies matches on subsequent loops Set pasteRng = Sheets("Output").Range("A" & j & ":G" & j) Set WorkRng = Union(WorkRng, pasteRng) 'this line does not increase WorkRng.Rows.Count except on the first loop End If Next j If WorkRng.Rows.Count > 1 Then 'do some stuff End If Set pasteRng = Nothing Set WorkRng = Nothing Next i 

我将不胜感激任何指导。

如果你跳过了行,你会得到一个多区域(非连续)范围,所以默认情况下,Rows.Count将只返回第一个区域(即1)中的行数,

在“即时”窗格中:

 ? Range("$A$1:$C$1,$A$3:$C$3").Rows.Count >> 1 

你可以更新你的If检查:

 If WorkRng.Cells.Count > 6 Or Then 'do some stuff End If