7

そのため、Range("A:A") で Range("M" & i) の値を検索するワークシートがあります。ただし、このコードを実行しようとすると、次のエラーが返されます。「実行時エラー '91': オブジェクト変数または With ブロックが設定されていません。[デバッグ] をクリックすると、

 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
4

1 に答える 1

13

範囲を割り当てるときは、使用する必要があります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

EDIT:また、フルパスを使用することをお勧めします。そうしないと、検索は常にアクティブなシートで行われます

例えば

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

他の人についても同様です。

于 2012-06-07T22:04:20.707 に答える