我正在尝试选择一个包含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
答案 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)