1

以下のマクロを実行すると、「アプリケーション定義またはオブジェクト定義エラー」が発生します。

「DB」シートの各列を解析して、その列を検索したいと思います。

Sub test()  
Dim FindString As Range
Dim Rng As Range

Dim i, j As Integer
Dim finalcol As Long

Worksheets("DB").Select

finalcol = Worksheets("DB").Cells(1, Application.Columns.Count).End(x1toleft).column
On Error Resume Next

For i = 1 To finalcol
    FindString = Cells(1, i).Value

    If Trim(FindString) <> "" Then
        With Sheets("DB").Range("A:A")
            Set Rng = .Find(What:=FindString, _
                        After:=.Cells(.Cells.Count), _
                        LookIn:=xlValues, _
                        LookAt:=xlWhole, _
                        SearchOrder:=xlByRows, _
                        SearchDirection:=xlNext, _
                        MatchCase:=False)
            If Not Rng Is Nothing Then
                Application.Goto Rng, True
            Else
                MsgBox "Nothing found"
            End If
        End With
    End If
Next i
On Error GoTo 0

End Sub
4

1 に答える 1

4

あなたのx1toleft定数はxlToLeft(ex ell、ex oneではなく)でなければなりません。キャメルケースに変換されないという事実は、ヒントです。

また、FindStringはDim FindString As StringRangeとして使用しないでください。行を削除すると、オブジェクト変数を使用する必要があるため、行On Error Resume Nextでエラーが発生します。実行してエラーが抑制されると、FindString(範囲変数として)はNothingになります。FindString = Cells(1,i).ValueSet

エラーが発生しませんでした。何も見つかりませんでした。ただし、これらの変更を行うと、修正されるか、実際のエラーが明らかになります。いずれの場合も、デバッグが完了するまでエラー処理を削除してから、再度追加する必要があります。

于 2012-12-05T15:43:02.167 に答える