性格悪い人が優勝

★部分でインデックスが有効範囲にありません。とでます。
 集計依頼情報(2)から集計用依頼情報にコピーしたものを貼り付け
 たいのですが、ここで上のエラーがでます。
 何がおかしいのでしょうか?
ちなみにエクセルVBAです。
 
Sub sample()
Dim lngKns As Integer
Dim lngRow As Long



Workbooks.Open Filename:=ThisWorkbook.Path & "\集計用依頼情報(2).csv"


Worksheets("集計用依頼情報(2)").Activate

'受付日の数をカウントしてデータ数を取得
lngKns = WorksheetFunction.Count(Worksheets("集計用依頼情報(2)").Range("Z2:Z65536"))

'集計用依頼情報(2)→集計用依頼情報にコピー
Worksheets("集計用依頼情報(2)").Select
Worksheets("集計用依頼情報(2)").Range("A2:CW" & 1 + lngKns).Copy


Workbooks.Open Filename:=ThisWorkbook.Path & "\集計用依頼情報.csv"

'受付日の数をカウントしてデータ数を取得
lngRow = WorksheetFunction.Count(Worksheets("集計用依頼情報").Range("Z2:Z65536"))



★ ThisWorkbook.Worksheets("集計用依頼情報").Activate
'値貼り付け
ThisWorkbook.Worksheets("集計用依頼情報").Range("A" & lngRow + 1 & _
":CW" & lngRow + lngKns).Paste


ActiveSheet.Paste

Application.CutCopyMode = False


End Sub

A 回答 (3件)

ANo.1です。



> とったとしても貼り付けの時点で
> 同じエラーがでて止まってしまいます

またまたソースを見ただけでの回答ですが、Pasteはアクティブなシートやセルにしかできません(Rangeに対してはNG)。

以下のようにセルをセレクトするとどうでしょう?
ThisWorkbook.Worksheets("集計用依頼情報").Activate
ThisWorkbook.Worksheets("集計用依頼情報").Range("A" & lngRow + 1 & ":CW" & lngRow + lngKns).Paste
ActiveSheet.Paste



Worksheets("集計用依頼情報").Activate
Worksheets("集計用依頼情報").Range("A" & lngRow + 1 & ":CW" & lngRow + lngKns).Select
ActiveSheet.Paste


あるいは、コピー&ペーストではなく、セルに値を直接入れるとか……。

Worksheets("集計用依頼情報").Range("A" & lngRow + 1 & _
":CW" & lngRow + lngKns).Value = Worksheets("集計用依頼情報(2)").Range("A2:CW" & 1 + lngKns).Value

この回答への補足

Worksheets("集計用依頼情報").Activate
Worksheets("集計用依頼情報").Range("A" & lngRow + 1 & ":CW" & lngRow + lngKns).Select
ActiveSheet.Paste

返信ありがとうございます。
この通りに修正してみたんですが、やはり同じエラーが発生して
しまいます。

>Pasteはアクティブなシートやセルにしかできません(Rangeに対してはNG)。
知りませんでした。
 ありがとうございます。

補足日時:2010/07/09 12:12
    • good
    • 0
この回答へのお礼

mt2008さん
返信ありがとうございます。
検証してみた結果データ数がエクセルの許容範囲を
超えていました。

データを削除すればいけました!
ありがとうございました!

お礼日時:2010/07/09 12:59

エクセルでは、ブックやシートはコレクションといい、集団で扱うことになっており、


(1)名前で特定
(2)インデックス番号で指定
(3)ActiveXX、XXNextなど、ForEachなど
の、主に(1)(2)の2つが出来る。
そういう中で「インデックスが有効範囲にありません」は、指定されたブックやシートが存在しないときに指摘が出るもの。
(1)プログラムでのインデクス指定数が、不適当プログラムでエラーで暴走した(実情の存在数を超えた)や
(2)その名前の物が見つからないが
ほとんど。
(1)は、ほとんどこのやり方は使わないだろうし、(2)も存在しない名前をコーダーは書くつもりは無いとおもう。しかし半角全角を取り違えていたり、スペースの有無、名前のタイプミスをしていたり、シートが意に反して抹消済みだったりは起こりえる。
名前のスペルを見直したら。
    • good
    • 0
この回答へのお礼

imogasiさん

返信ありがとうございます。
参考になりました!

お礼日時:2010/07/09 13:01

自ブックに"集計用依頼情報"と言うシートがありますか?


コードを見て想像する限りでは、自ブックにそんなシートは無く、直前でOPENしている 集計用依頼情報.csv にペーストしたいんじゃないんですか?

で、あればThisWorkbookを取ってしまえば?
次のペーストしている行も同様です。

最後のActiveSheet.Paste も余計な気がします……。

この回答への補足

返信ありがとうございます。
実はこのエラーがでるのでThisWorkbookをつけてみた次第
で当初はついていませんでした。
確かにこれだと自ブックに貼り付けたいとうことになりますよね。。

とったとしても貼り付けの時点で
同じエラーがでて止まってしまいます。

補足日時:2010/07/08 21:11
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!