Excel VBA范围选择
我有一个宏,需要在其中选择范围Excel VBA范围选择,vba,excel,Vba,Excel,我有一个宏,需要在其中选择范围R2:工作表中的最后一行。但是,我的工作表的最后一行在R列中可能为空。目前我正在使用这个 Dim t As Range Set t = Range("R2", Range("R1000").End(xlUp)) For Each Cell In t If IsEmpty(Cell) Then Cell.Activate ActiveCell.Value = "To Be Picked Up" End If Next
R2:工作表中的最后一行
。但是,我的工作表的最后一行在R列中可能为空。目前我正在使用这个
Dim t As Range
Set t = Range("R2", Range("R1000").End(xlUp))
For Each Cell In t
If IsEmpty(Cell) Then
Cell.Activate
ActiveCell.Value = "To Be Picked Up"
End If
Next
但是,如果最后一行的R
列中有一个空白,那么它将被忽略。我希望使用列A
来提取范围,因为最后一行数据总是有列A
。比如说
Dim t As Range
Set t = Range("R2", Range("A1000").End(xlUp).ActiveCell.Offset(0, 17))
For Each Cell In t
If IsEmpty(Cell) Then
Cell.Activate
ActiveCell.Value = "To Be Picked Up"
End If
Next
这看起来很简单,但我肯定我错过了一些愚蠢的事情。任何帮助或替代方法都会很有帮助,谢谢。这应该在一行中实现:
Sub SO()
Range("R2:R" & Range("A" & Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeBlanks).Value = "To Be Picked Up"
End Sub
但具体地回答你的问题
Range()
方法将接受字符串作为获取范围的参数。因此,我们可以按照任何方式构建此字符串:
"A1000" '// A1000
"A" & 1000 '// A1000
"A" & "10" & "00" '// A1000
"A" & CStr(1001 - 1) '// A1000
“A”和Rows.Count将根据工作表的类型返回A65536
或A1048576
Range(“A1048576”).End(xlUp)
将按照指定方向检索该区域的最后一个单元格或下一区域的第一个单元格
Range(“A1048576”).End(xlUp)。Row
将返回该单元格的行号(为了参数起见,假设它是A1000),因此返回值为1000
“R2:R”和Range(“A”和Rows.Count).End(xlUp).Row
因此生成字符串R2:R1000
- 最后,
Range(“R2:R”)和Range(“A”和Rows.Count).End(xlUp.Row)
与Range(“R2:R1000”)
"A1000" '// A1000
"A" & 1000 '// A1000
"A" & "10" & "00" '// A1000
"A" & CStr(1001 - 1) '// A1000