Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7583 / 76732 ←次へ | 前へ→

【74735】Re:Set(Find) の使い方
発言  kanabun  - 13/9/4(水) 16:41 -

引用なし
パスワード
   ▼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

こんなプロシージャ実行したら、どうなりますか?
4 hits

【74730】Set(Find) の使い方 3891 13/9/4(水) 10:24 質問
【74732】Re:Set(Find) の使い方 kanabun 13/9/4(水) 11:02 発言
【74734】Re:Set(Find) の使い方 3891 13/9/4(水) 16:23 発言
【74735】Re:Set(Find) の使い方 kanabun 13/9/4(水) 16:41 発言
【74736】Re:Set(Find) の使い方 3891 13/9/4(水) 17:04 お礼

7583 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free