用i整数选择单元格范围

时间:2018-07-12 12:40:05

标签: excel vba excel-vba

我正在尝试选择一个包含i整数的单元格区域。我希望选择特定范围的单元格,而不是选择整个行。下面,我提供选择整个行的代码(可以正常运行),以及我编写的用于选择特定范围的代码(不能运行)

行代码

With ws2
lastrow1 = .Range("A" & Rows.Count).End(xlUp).Row
For i = 4 To lastrow1
    If .Cells(i, "D").Interior.ColorIndex = -4142 Or .Cells(i, "D").Interior.ColorIndex = 2 Then
        If CopyRange Is Nothing Then
        Set CopyRange = .Rows(i)
        Else
        Set CopyRange = Union(CopyRange, .Rows(i))
        End If
    End If
Next i
End With

范围代码

With ws2
lastrow1 = .Range("A" & Rows.Count).End(xlUp).Row
For i = 4 To lastrow1
    If .Cells(i, "D").Interior.ColorIndex = -4142 Or .Cells(i, "D").Interior.ColorIndex = 2 Then
        If CopyRange Is Nothing Then
        Set CopyRange = .Cells("A & i & ":F" & i)
        Else
        Set CopyRange = Union(CopyRange, .Rows(i))
        End If
    End If
Next i
End With

2 个答案:

答案 0 :(得分:1)

这里的问题是Cells只接受像Cells(row, column)这样的行和列,因此您需要对Range()这样的范围使用.Range("A" & i & ":F" & i)

此外,您还需要相应地调整else部分,因为您仍在Rows(i)中使用Union()

With ws2

    lastrow1 = .Range("A" & Rows.Count).End(xlUp).Row
    For i = 4 To lastrow1
        If .Cells(i, "D").Interior.ColorIndex = -4142 Or .Cells(i, "D").Interior.ColorIndex = 2 Then
            If CopyRange Is Nothing Then
                Set CopyRange = .Range("A" & i & ":F" & i)
            Else
                Set CopyRange = Union(CopyRange, .Range("A" & i & ":F" & i))
            End If
        End If
    Next i

End With

答案 1 :(得分:1)

您本可以使用offset和调整大小来获取范围。

Cells(i, "D").Offset(0, -3).Resize(1, 6)