ここから本文です

VBSにて「インデックスが有効範囲にありません」とエラーが出て動かないとき、また...

gss_ts_hyさん

2010/2/1823:50:13

VBSにて「インデックスが有効範囲にありません」とエラーが出て動かないとき、またエラー出ず正常に動作することがあります。

VBScriptを作ったのですが、
正常に作動するときもあれば、エラーで動かないときもあります。
エラーは「インデックスが有効範囲ではありません」と出ます。
これはなぜでしょう??

内容は、ファイル1・2を開き、曜日により異なる範囲を選択し、
コピーするというものです。

エラーはCase文の1行目が実行されて、2行目でエラーとなります。
よろしくお願いします。


Dim objExcel
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = False
objExcel.Workbooks.Open("\\172.25.255.24\Users\Documents\char\file2.xls")
ECopy()
objExcel.Quit
Set objExcel = Nothing


Function ECopy()
objExcel.Workbooks.Open("\\172.25.255.24\Users\Documents\file1.xls")
Select Youbi
Youbi = Weekday(date+1)
If Youbi = 1 then Youbi = 2

Case 2
objExcel.Workbooks("file1.xls").Worksheets("月AM").Range(C4:C34).Copy objExcel.Workbooks("file2.xls").Worksheets("指定シート").Range(B2:B32)
objExcel.Workbooks("file1.xls").Worksheets("月PM").Range(C4:C34).Copy objExcel.Workbooks("file2.xls").Worksheets("指定シート").Range(C2:C32)
objExcel.Workbooks("file1.xls").Worksheets("月AM").Range(F4:F34).Copy objExcel.Workbooks("file2.xls").Worksheets("指定シート").Range(D2:D32)
objExcel.Workbooks("file1.xls").Worksheets("月PM").Range(F4:F34).Copy objExcel.Workbooks("file2.xls").Worksheets("指定シート").Range(E2:E32)
objExcel.Workbooks("file1.xls").Worksheets("月AM").Range(I4:I34).Copy objExcel.Workbooks("file2.xls").Worksheets("指定シート").Range(F2:F32)
objExcel.Workbooks("file1.xls").Worksheets("月PM").Range(I4:I34).Copy objExcel.Workbooks("file2.xls").Worksheets("指定シート").Range(G2:G32)
objExcel.Workbooks("file1.xls").Worksheets("月AM").Range(J4:J34).Copy objExcel.Workbooks("file2.xls").Worksheets("指定シート").Range(H2:H32)
objExcel.Workbooks("file1.xls").Worksheets("月PM").Range(J4:J34).Copy objExcel.Workbooks("file2.xls").Worksheets("指定シート").Range(I2:I32)

Case 3
'Case3~7で同様の処理
End Select
objExcel.Workbooks("file2.xls").Save
End Function

閲覧数:
17,332
回答数:
2

違反報告

ベストアンサーに選ばれた回答

ruthy36thさん

2010/2/1911:37:23

「インデックスが有効範囲にありません」というのは、配列から何か値を
取り出す時に、その配列に存在しない要素番号を指定すると表示されるエラーです。

今回の例ですと、なんとなくシートの指定が怪しい感じがしますね。
file2.xlsには、常に「指定シート」という名前のシートがあるのでしょうか?
file1.xlsには、常に「月AM」「月PM」「火AM」「火PM」・・・・・という名前の
シートがあるのでしょうか?
エラーが出る状況で、これらを確認してみてください。

この質問は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

2010/2/1901:23:19

こんにちは。
まず、select から、 case2までの間の処理、selectの上に、移動させてください。
文法エラーです。

エラーにならないかもしれませんが、Range(C4:C34) は、 Range("C4:C34") と、"記号を正しく使って下さい。

それから、C4:C34 をコピーし、 destの範囲を B2:C32とすると、正しく一度にコピーできないか、試して下さい。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。