设置范围语句出错

时间:2015-07-10 18:55:57

标签: vba excel-vba excel

有人可以帮忙解决这个问题吗?它会在第6行(Set rng = Sheet3.Range(Cells(1,i),Cells(1,j)).Select)引发错误,但我不知道如何修复它。

Public Sub CommandButton1_Click()
    Dim i As Integer
    i = 3
    Dim j As Integer
    j = 5
    Set Rng = Sheet3.Range(Cells(1, i), Cells(1, j)).Select
    lAnswer = Application.WorksheetFunction.Sum(Rng)
    Sheet1.Cells(5, 13).Value = lAnswer
End Sub

2 个答案:

答案 0 :(得分:3)

您已收到语法问题的答案,但在使用用于定义Range.Cells properties范围的两个Range object时,我也会提醒您关于孤立的单元格引用。具体来说,他们的Range .Parent property是任意的。

data_base

这一行也可以写成,

Public Sub CommandButton1_Click()

    Dim i As Long
    Dim j As Long
    Dim Rng As Range
    Dim lAnswer As Double

    i = 3
    j = 5
    with Sheet3
        Set Rng = .Range(.Cells(1, i), .Cells(1, j))
    end with
    lAnswer = Application.WorksheetFunction.Sum(Rng)
    Sheet1.Cells(5, 13).Value = lAnswer

End Sub

...但是With...End With statement整洁地清理它。如果不指定.Cells的父级,则存在尝试在Sheet3上定义包含来自另一个工作表的单元格的范围的风险。我意识到这是一个命令按钮,任意单元格范围的父母应该隐含地是包含单击按钮的工作表,但是你为.Range定义了Sheet3,所以良好的编码实践要求你明确地完成练习将Sheet3定义为嵌套.Cells的父级。

答案 1 :(得分:2)

只需删除'选择'该行的一部分。

Public Sub CommandButton1_Click()

    Dim i As Integer
    Dim j As Integer
    Dim Rng As Range
    Dim lAnswer As Long

    i = 3
    j = 5
    Set Rng = Sheet3.Range(Cells(1, i), Cells(1, j)) 'remove '.select'
    lAnswer = Application.WorksheetFunction.Sum(Rng)
    Sheet1.Cells(5, 13).Value = lAnswer

End Sub