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

解決


mimi_yahoo  2008-05-04 11:28:26  No: 139665

インデックスが有効範囲にありません のエラーで困っています。
よろしくお願いします。
下記のようなプログラムを実行すると、④の時点でエラーが出ます。
("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 11:33:13  No: 139666

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

実際は下記となり、④の時点でエラーとなります。
①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 13:55:00  No: 139667

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

Dim sht as string

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

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


mimi_yahoo  URL  2008-05-05 08:03:02  No: 139668

と、さん  アドバイスありがとうございます。
しかしやってみてもやはりエラーになってしまいました。
ローカルウィンドウでは
  : 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 09:49:02  No: 139669

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


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加