【发布时间】:2013-12-20 15:10:37
【问题描述】:
在 excel vba 中,我尝试选择从单元格“O2”开始的一系列值,(O 来自 Oyster)一直到工作表的末尾, 我正在尝试:
Range("O2", Range.End(xlDown))
但是 Argument Not Optional 失败了。我究竟做错了什么?
我正在使用 Excel 2010。
【问题讨论】:
在 excel vba 中,我尝试选择从单元格“O2”开始的一系列值,(O 来自 Oyster)一直到工作表的末尾, 我正在尝试:
Range("O2", Range.End(xlDown))
但是 Argument Not Optional 失败了。我究竟做错了什么?
我正在使用 Excel 2010。
【问题讨论】:
不要使用xlDown 声明你的对象然后使用它。
使用这个
Option Explicit
Sub Sample()
Dim ws As Worksheet
Dim LRow As Long
Dim rng As Range
'~~> Change this to the relevant sheet name
Set ws = ThisWorkbook.Sheets("Sheet1")
With ws
'~~> Find last row in Col O which has data
LRow = .Range("O" & .Rows.Count).End(xlUp).Row
'~~> This is your range
Set rng = .Range("O2:O" & LRow)
With rng
'~~> Whatever you want to do
End With
End With
End Sub
【讨论】:
要选择从 O2 到该列中最后一个填充单元格的范围,您可以使用:
Range("O2", Range("O2").End(xlDown)).Select
但这有一些问题,包括它会在任何空白处“停止”,除非绝对必要,否则您应该avoid using Select。此外,您应该养成限定范围的习惯,例如,指定它们在哪个工作表中。鉴于所有这些,我建议您这样做,假设您想将范围内的单元格变为红色:
Sub test()
Dim LastRow As Long
Dim ws As Excel.Worksheet
Set ws = ActiveSheet
With ws
LastRow = .Range("O" & .Rows.Count).End(xlUp).Row
.Range("O2:O" & LastRow).Interior.Color = vbRed
End With
End Sub
【讨论】:
xldown 的另一个问题是,如果 O2 是唯一有数据的单元格,那么 xldown 将选择整个范围,直到 Excel 行的末尾。
也许你需要
Range("O2", Range("O2").End(xlDown)).Select
?
【讨论】: