|
▼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
こんなプロシージャ実行したら、どうなりますか?
|
|