| 
    
     |  | ▼3891 さん: 
 >Obj1の宣言は、サブルーチンの頭に入れています。
 >
 >Private Sub ステージ()
 >Dim Obj1, Obj2 As Object
 
 あ、それだと、As Object は Obj2 にしか適用されてませんよ。
 それと、Obj1 の利用法が Rangeオブジェクトとして、と限定されているなら、
 何も総称オブジェクトであいまい宣言する必要はないです。
 
 Dim Obj1 As Range, Obj2 As Range
 
 ただ、Obj1の型が 総称オブジェクトなら
 
 > Set Obj1 = Worksheets("Sheet1").Cells.Find("stage")
 
 で、検索語"stage" が「Sheet1」に見つからなくても、
 Obj1 には Nothing がセットされるだけなので、(総称オブジェクトで宣言
 していることでエラーが起きることは無いので)当座は問題ありません。
 
 >エラーメッセージは
 >
 >実行時エラー '9'
 >インデックスが有効範囲にありません。
 >
 >です
 
 インデックスエラーが起きているのでしたら、通常は コレクションのメンバ
 に指定されたインデックスがいない、ことを疑います。
 今回は
 
 > Set Obj1 = Worksheets("Sheet1").Cells.Find("stage")
 
 でインデックス・エラー ですから、ワークシートコレクションのメンバに
 "Sheet1" という名前のメンバがいない、ということです。
 この点は大丈夫ですか?
 たとえば、
 
 Sub Chk1()
 MsgBox Worksheets(1).Name
 MsgBox Worksheets("Sheet1").Name
 End Sub
 
 こんなプロシージャ実行したら、どうなりますか?
 
 
 |  |