【问题标题】:Object variable or with block not set -对象变量或未设置块 -
【发布时间】:2012-06-12 00:25:28
【问题描述】:

所以,我有一个工作表,我想在其中搜索 Range("A:A") 中的 Range("M" & i) 值。但是,当我尝试运行此代码时,它返回一个错误:“运行时错误'91':对象变量或未设置块。当我单击调试时,它发现一个错误

 SearchIn = Range("A:A") 

我用谷歌搜索了互联网和这个网站(找到了一些东西),但我仍然无法解决问题。有人知道吗?

Sub Find_Replace()

Dim i As Integer
Dim SearchIn As Range
Dim SearchedObject As Range
Dim FinalCell As Range
Dim SumCell As Range


i = 5
SearchIn = Range("A1:A740")
StartSearch = Range("A" & i)
FinalCell = Range("N" & i)

Do While i <= 740

SearchedObject = SearchIn.Find(What:="M" & i, After:=StartSearch, LookIn:=xlValues,          LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)

If SearchedObject.Value = Range("M" & i).Value Then FinalCell = FinalCell.Value + SearchedObject.Offset(0, 5).Value

Loop


End Sub

【问题讨论】:

标签: excel vba


【解决方案1】:

分配范围时,必须使用SET

Sub Find_Replace()
    Dim i As Integer
    Dim SearchIn As Range
    Dim SearchedObject As Range
    Dim FinalCell As Range
    Dim SumCell As Range

    i = 5
    
    Set SearchIn = Range("A1:A740")
    Set StartSearch = Range("A" & i)
    Set FinalCell = Range("N" & i)

    Do While i <= 740

        Set SearchedObject = SearchIn.Find(What:="M" & i, After:=StartSearch, _
        LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
        SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
        
        If Not SearchedObject Is Nothing Then
            If SearchedObject.Value = Range("M" & i).Value Then _
            FinalCell.Value = FinalCell.Value + SearchedObject.Offset(0, 5).Value
        End If
    Loop
End Sub

编辑:另外建议使用完整路径,否则搜索将始终发生在活动工作表中

例如

Set SearchIn = Sheets("Sheet1").Range("A1:A740")

对其他人也是如此。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-11
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多