excel vba:Range给出Argument Not Optional错误消息

时间:2013-12-20 15:10:37

标签: excel vba range

在excel vba中,我试着从Cell“O2”开始选择一系列值,(O from Oyster)直到表格的末尾, 我在尝试:

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

但是Argument Not Optional失败了。我究竟做错了什么? 我正在使用Excel 2010。

3 个答案:

答案 0 :(得分:5)

请勿使用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

答案 1 :(得分:3)

要选择从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

答案 2 :(得分:2)

也许你需要

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