VBA范围可能存在范围差距

时间:2016-01-26 15:22:56

标签: excel vba excel-vba range

当我尝试在单个列中组合范围但两者之间存在间隙时,由于代码有问题,它会重新开始。以下是我一直试图运行的代码:

Set Rrng = ThisWorkbook.Worksheets(Sheet9.Name).Range("D14:D19").SpecialCells(xlCellTypeVisible)

If Not IsEmpty(ThisWorkbook.Worksheets(Sheet9.Name).Range("D21")) Then

    Set Rrng = Union(Rrng, ThisWorkbook.Worksheets(Sheet9.Name).Range("D20:D22").SpecialCells(xlCellTypeVisible))

End If

If Not IsEmpty(ThisWorkbook.Worksheets(Sheet9.Name).Range("D24")) Then

    Set Rrng = Union(Rrng, ThisWorkbook.Worksheets(Sheet9.Name).Range("D23:D25").SpecialCells(xlCellTypeVisible))

End If

If Not IsEmpty(ThisWorkbook.Worksheets(Sheet9.Name).Range("D27")) Then

    Set Rrng = Union(Rrng, ThisWorkbook.Worksheets(Sheet9.Name).Range("D26:D28").SpecialCells(xlCellTypeVisible))

End If

Set Rrng = Union(Rrng, ThisWorkbook.Worksheets(Sheet9.Name).Range("D29:D" & LastRow).SpecialCells(xlCellTypeVisible))

我想这应该通过改编到细胞来解决,但我不确定?

2 个答案:

答案 0 :(得分:0)

是否存在妨碍您简单使用

的内容
set rRng = range("d14:d" & lastrow).SpecialCells(xlCellTypeConstants)

答案 1 :(得分:-1)

假设LastRow是从某个Range引用获得的行号(例如:lastrow = ThisWorkbook.Worksheets(Sheet9.Name).Range("D65536").end(xlUp).Row) ,这将是一个整数,但是像这样引用单元格需要一个字符串变量。因此它应该如下所示:

Set Rrng = Union(Rrng, ThisWorkbook.Worksheets(Sheet9.Name).Range("D29:D" & CStr(LastRow)).SpecialCells(xlCellTypeVisible))