excel vba:范围给参数不可选错误消息

在Excel VBA我试着select一个范围的值开始单元格“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 

要selectO2到该列最后一个填充的单元格的范围,可以使用:

 Range("O2", Range("O2").End(xlDown)).Select 

但是,这有几个问题,包括它会在任何空白处“停止”的事实,并且除非绝对必要,否则应该避免使用Select 。 另外,你应该习惯性地限定你的范围,例如指定他们在哪个工作表。假设你想把范围内的单元格变成红色,我build议这样做:

 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 

也许你需要

 Range("O2", Range("O2").End(xlDown)).Select