2013-04-29 144 views
1

我想在「Total Service Fees」單元格上面得到列G:26到1的總和。我遇到運行時錯誤'1004'。應用程序定義或對象定義的錯誤。有誰知道這可能來自什麼?ActiveCell.Formula運行時錯誤1004

Worksheets(1).Select 
Dim rng1 As Range 
Dim strSearch As String 
strSearch = "Total Service Fees" 
Set rng1 = Range("F15:F100").Find(strSearch, , xlValues, xlWhole) 
If Not rng1 Is Nothing Then 
    rng1.Offset(0, 1).Select 
    ActiveCell.Formula = "=SUM(G26:" & ActiveCell.Offset(-1, 0).Select & ")" 
Else 
    MsgBox strSearch & " not found" 
End If 

我得到正確的答案,但我仍然得到這個錯誤。

+0

我不打算在該公式中使用「選擇」方法。詳細說明:打開立即窗口(CTRL + G)並輸入 - 包括'?',然後按回車:??= SUM(G26:「&ActiveCell.Offset(-1,0).Select& )「'你應該看到這不是一個有效的公式。 – Gaffi 2013-04-29 19:42:27

+0

你會建議什麼?它給我= SUM(G26:True) – Sokies 2013-04-29 19:45:01

+0

''SUM(G26:True)'是你告訴代碼分配公式的代碼。這是無效的,所以你需要提供一個有效的'A1'風格範圍標識符。 – Gaffi 2013-04-29 19:48:03

回答

2

避免使用SELECT。您可能想要看到THIS

當您確定了具有搜索文本的單元格後,只需檢索該單元格的行並使用該單元格即可。看到這個例子(UNTESTED)。

Dim rng1 As Range 
Dim strSearch As String 
Dim r As Long 

With Worksheets(1) 
    strSearch = "Total Service Fees" 
    Set rng1 = .Range("F15:F100").Find(strSearch, , xlValues, xlWhole) 
    If Not rng1 Is Nothing Then 
     r = rng1.Row 
     .Range("G" & r).Formula = "=SUM(G26:G" & r & ")" 
    Else 
     MsgBox strSearch & " not found" 
    End If 
End With 

注意:我沒有做過任何錯誤處理。你將不得不照顧這一點。例如,如果在F26上找到搜索文字,該怎麼辦?

+0

這使得TotalServiceFees在執行SUM時包含一行 – Sokies 2013-04-29 19:50:18

+0

這就是你想要的嗎? 'r = rng1.Row -1' – 2013-04-29 19:50:48

+0

如果你想在F單元格旁邊的G單元格中找到文本,那麼不要改變上面的公式。但是將'.Range(「G」&r).Formula =「= SUM(G26:G」&r&「)」'改爲'.Range(「G」&r).Formula =「= SUM(G26: G「&(r-1)&」)「' – 2013-04-29 19:56:36

0
Set rng1 = Range("F15:F100").Find(strSearch, , xlValues, xlWhole) 

我認爲你的問題在於此。嘗試聲明工作表或將變量設置爲適當的工作表。

Dim WS as Worksheet 
Set WS = Activeworkbook.Sheets("Enter Sheet Name") 
Set rng1 = WS.Range("F15:F100").Find(strSearch, , xlValues, xlWhole)