インデックスが有効範囲にありません。のエラー

解決


mimi_yahoo  2008-05-04 02:28:26  No: 139665  IP: 192.*.*.*

インデックスが有効範囲にありません のエラーで困っています。
よろしくお願いします。
下記のようなプログラムを実行すると、④の時点でエラーが出ます。
("i") を変数ではなく  ("1510")と書くとエラーはでません。
しかし、変数を使用しているときにエラー時、ウォッチリストを見ても  i=1510  となっているので、問題ないと思うのですが、なぜこれでうまく行かないのでしょう。

①i = 1510
②YAHO = "http://profile.yahoo.co.jp/fundamental/"
③Workbooks.Open Filename:=YAHO & i
④Workbooks("i").ActivateWorkbooks("i").Worksheets("i").Range("B42").Select
⑤Workbooks("i").Worksheets("i").Range("B42").Select

初歩的な質問で申し訳ありませんがよろしくお願いします。

編集 削除
mimi_yahoo  2008-05-04 02:33:13  No: 139666  IP: 192.*.*.*

すいません、プログラムの部分がアップするときにコピペでくちゃくちゃになっていました。

実際は下記となり、④の時点でエラーとなります。
①i = 1510
②YAHO = "http://profile.yahoo.co.jp/fundamental/"
③Workbooks.Open Filename:=YAHO & i
④Workbooks("i").Activate
⑤Workbooks("i").Worksheets("i").Range("B42").Select

よろしくお願いいたします。

編集 削除
 2008-05-04 04:55:00  No: 139667  IP: 192.*.*.*

ダブルクォーテーションで囲まれているので
文字列で"i"というシートを指定しているのでは?

Dim sht as string

i = 1510 
sht = str(i)
Workbooks(sht).Activate

#試していませんのでエラーが出たらごめんなさい。

編集 削除
mimi_yahoo  URL  2008-05-04 23:03:02  No: 139668  IP: 192.*.*.*

と、さん  アドバイスありがとうございます。
しかしやってみてもやはりエラーになってしまいました。
ローカルウィンドウでは
  : sht : " 5010" : String
  : i : 5010 : Variant/Integer
と今度は教示されています。
なんかマズイところがありましたら、お教えいただければありがたいです。
下記がこの部分で記述した全部です。
なぜ変数  i にしたかというと、最終的にやりたいのは、自動的に5000〜8000の番号のWEBを取得し固定のセルをどんどんyahoo.csvシートにコピーしていくためにFor nextを使うための前段階なためです。しかしながら、今、この一件でさえ出来ないな避けない状態となっています。よろしくアドバイスお願いいたします。
Private Sub CommandButton2_Click()
Dim YAHO As String
Dim sht As String
i = 5010
sht = Str(i)
SAKI = "C:\Documents and Settings\hideko_iw\MyDocuments\YAHOO\yahoo.csv"
YAHO = "http://profile.yahoo.co.jp/fundamental/"

Workbooks.Open Filename:=YAHO & i
Workbooks(sht).Activate
Workbooks(sht).Worksheets(sht).Range("B42").Select

編集 削除
mimi_yahoo  2008-05-05 00:49:02  No: 139669  IP: 192.*.*.*

CStr  関数で文字変換することにより無事解決しました。
ありがとうございました!

編集 削除