2015-07-10 28 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。