ActiveCell.Formula运行时错误1004

时间:2013-04-29 19:40:19

标签: excel vba excel-vba

我试图在“总服务费”单元格上方获得G:26到1列的总和。我遇到了运行时错误'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

我得到正确答案,但我仍然收到此错误。

2 个答案:

答案 0 :(得分: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上找到搜索文本,该怎么办?

答案 1 :(得分: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)