2012-02-08 13 views
0

私の質問は、VBAのランタイムエラー91に関するものです。私は無駄な検索をしました。私のコードは以下の通りです。エラーの原因となったセクションに注目しました。なぜこれが起こっているのですか?それを修正して移動するにはどうしたらいいですか?VBAのfind関数のランタイムエラー91

Sub RemoveFooterRows(theFile) 
    Dim found As Range 
    Dim aggregateRow 

    ''Error is from section below 
    found = isItRow = Workbooks(theFile).Worksheets(1).Columns(1).Find _ 
     ("Summary", Range("A1"), xlValues, xlPart, xlByRows, xlNext, False, , False) 
    ''Error is from section above 

    MsgBox ("val is " & found.Row) 

End Sub 

答えて

3
Sub RemoveFooterRows(theFile) 

    Dim found As Range 

    Set found = Workbooks(theFile).Worksheets(1).Columns(1).Find _ 
     ("Summary", Range("A1"), xlValues, xlPart, xlByRows, xlNext, False, , False) 
    MsgBox ("val is " & found.Row) 

End Sub 

あなたは値を割り当てるために、 "セット" キーワードを必要としています。

また、 "isItRow ="を実行するにはわかりませんが、そのようにスタックするのではなく、2つのステートメントで実行する必要があります。

また、aggregateRowは使用されず、型も割り当てられません。

+3

の価値を発見していない場合は'チェックを追加することではありません。 –

+0

それはうまくいく、私は二重の割り当てを持っていたことを理解していない。しかし、どうやって行を取得するのですか。最後に.Rowを追加すると、同じエラーが発生します。見つかった行を変数に割り当てるにはどうすればよいですか? – Brian

+0

.rowに何を追加しますか?それは既にMsgBoxのラインにあり、私のために罰金を返します。 – Jesse

0

SETを使用して、セルを見つけてオブジェクトに配置します。しかし、単に行を持っていれば、SETを出すことができます。これは私がこれまでにそのテストを書くでしょうかです:何も場合に値が見つかりませんでした `...そして、また

Dim Rw As Long 

On Error Resume Next 
Rw = Workbooks(theFile).Worksheets(1).Columns(1).Find _ 
    ("Summary", LookIn:=xlValues, LookAt:=xlPart).Row 

If Rw > 0 Then 
    MsgBox "The row is " & Rw 
Else 
    MsgBox "Not found" 
End If 
+0

あなたのチェックと「見つからない場合は何ですか」との違い – Brian

+0

コードを使用して、エラー時再開時にコメントアウトしても、同じエラーが発生します。私はそれを書いたように発見を使用した。私は値が列Aにあることを知っています、なぜエラーは存在しますか? – Brian

+0

'On Error Resume Next'は' .Find'が何も見つからない場合に '.Row'がエラーを生成するためです。 – mischab1

関連する問題