2015-07-10 64 views
2

有人可以帮助使用此代码吗?它会在第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 
+0

1)_哪个错误正在抛出? 2)Sheet3的第一行第3列和第5列是什么? 3)Sheet3是否存在? 4)你能解释你想做什么吗?代码写得很奇怪。 –

+0

嗨Matteo yes一切都在sheet3中,在我输入值的第一行中,我只是在将代码合并到我的工作表之前尝试一个简单的代码。我想要做的是总结让5个单元格在特定行中,然后到下一行然后总结相同的单元格。这就是为什么我试图看看我是否可以使用细胞功能的范围,我可以把它放在一个循环中,每次增加我 – Dean

回答

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 
+0

谢谢小姐,它的作品! – Dean

3

您收到一个答案的语法问题,但我也想提醒大家介绍在使用两Range.Cells properties用于定义Range object范围的孤立的单元格引用。具体而言,他们的Range .Parent property是任意的。

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 

这一行也可以写成,

Set Rng = Sheet3.Range(Sheet3.Cells(1, i), Sheet3.Cells(1, j)) 

...但With...End With statement清除它整齐。如果不指定.Cell的父级,则可能会尝试在Sheet3上定义一个范围,该范围包含另一个工作表中的单元格。我意识到这是一个命令按钮和任意单元格范围父项应该隐含地是包含按钮单击的工作表,但您正在为.Range定义Sheet3,因此良好的编码实践指示您通过明确定义Sheet3作为父项来完成练习嵌套.Cells。