エクセルのsheet1の各行にあるデータをSheet2以降の顧客管理カード単票に移したいです。 2回目です。

エクセルのsheet1の各行にあるデータをSheet2以降の顧客管理カード単票に移したいです。 2回目です。 全くの初心者です。実は質問2度目です。簡単な例を作り添付しましたが、Sheet1の2行目のセルからsheet2のセルに移すのは、A2→D2,B2→C3,H2→D5,I2→C6,J2→D7です。以降3行目のセルを3番目のsheetにと続けるVBAを教えてください。 先日に Sub Sample() Dim i As Long, sh As Worksheet Set sh = Worksheets("Sheet1") For i = 2 To sh.Cells(Rows.Count, 1).End(xlUp).Row With Worksheets("Sheet" & i) .Range("D2").Value = sh.Range("A" & i).Value .Range("C3").Value = sh.Range("B" & i).Value .Range("D5").Value = sh.Range("H" & i).Value .Range("C6").Value = sh.Range("I" & i).Value .Range("D7").Value = sh.Range("J" & i).Value End With Next i End Sub と教えて頂いたのですが、Sheet2にだけ転記されて、その後「インデックスが有効範囲にありません」と出てきてしまい、動きません。何度も恥ずかしいのですが、教えてください。

画像

Visual Basic198閲覧

ベストアンサー

0

前の質問に >sheet1の各行に対応した名前のシートがない。 >すなわち、Sheet1の2行~10行にデータがあるのなら >Sheet2~Sheet10が存在しないとダメ と答えたのですが、 Sheet3、Sheet4、・・・・ と言う「名前」が付いたシートがあるのでしょうか? 画像が小さく、シート名まで確認できません。 シート名ではなく、 「シートの位置」(左から何番目)でよい のなら、 With Worksheets("Sheet" & i) ↓ With Worksheets(i) と変更してください。 ただし、将来シートの位置が変更されたら、意図しない結果になるでしょう。

ThanksImg質問者からのお礼コメント

有難うございました。見事に動きました。VBAって素晴らしいものですね。シートを列の数だけ増やしたので、Sheet2(3)などとなっているせいだったのでしょうか。有難うございました。

お礼日時:2013/12/5 21:27