【发布时间】:2016-04-22 03:16:13
【问题描述】:
我有这段代码来捕获过滤表中的行号,做一些事情,然后转到下一个可见行。我在第一排工作得很好。
Sub test()
Dim rn As Long
Dim cell As Range
Dim rng As Range
Set rng = Sheets("FabricatedParts").Range("A:A").SpecialCells(xlCellTypeVisible)
rn = Sheets("FabricatedParts").UsedRange.Offset(1, 0).SpecialCells(xlCellTypeVisible).Row
For Each cell In rng
With ActiveSheet
.Range("B14").Value = [Parts].Cells(rn, [Parts[Part.]].Column)
End With
'rn = Next Visible Row #???.row
Next cell
End Sub
当我将 offset(1, 0) 更改为 offset(2, 0) 时,它仍然返回第一个可见行的行号(在本例中为 10)。我正在寻找一个 VBA 语句,它将返回下一个可见行的行号并将该数字传递给 rn 变量。对于过滤范围,我正在测试下一个行号是 11、下一个 165、下一个 166 等。谢谢您的时间。
【问题讨论】:
-
您已经将范围 (
rng) 设置为仅可见单元格,因此当您循环时,您将循环到下一个可见单元格。您可以将rn更改为cell.row通过您的代码,看起来您正在多次更改同一个单元格,可以假设只有一个您正在寻找的实例。尝试使用find()而不是循环遍历整个范围。