現在会社の個別の勤怠管理票を作り、それを集計するvbaを作りたく勉強しています。
そこでまず一人だけ(例では田中さん)についての勤怠管理票を開いて、それを集計用の別のブックのシートの転記を試みました。しかしインデックスが有効ではありませんと出ました。以下は私が書いたコードです。
Sub 田中勤務時間()
Application.ScreenUpdating = False Dim path As String Dim j As Long path = "C:\Users\tanak\OneDrive\デスクトップ\勤怠時間\" For j = 1 To 5 Workbooks.Open path & "田中.xlsx" ※ここが田中さんの勤怠用のエクセルブックを表しています。 Worksheets("Sheet2").Cells(4, 1 + j).Value = Cells(4, 1 + j).Value ←ここでインデックスが有効ではありませんと出ます。 ActiveWorkbook.Close savechanges:=False Next j
End Sub
おそらく今開いているエクセル(集計用のエクセル)と田中さんのエクセルファイルを区別できていないため、正常に作動しないと予想していますが、正しいコードが調べても分からなく、アドバイス頂けないでしょうか。宜しくお願い致します。
> Worksheets("Sheet2").Cells(4, 1 + j).Value = Cells(4, 1 + j).Value
上記コードのどこでエラーが発生しているのかを確かめましょう。まず、「Worksheets("Sheet2")」は存在していますか?
シート名は開いているブックに存在していますが、転記先のブック名だと正常に実施されなかったのですが、thisworkbookだと正常に作動しませんでした。
・作動したコード
ThisWorkbook.Worksheets("Sheet2").Cells(4, 1 + j).Value = Cells(4, 1 + j).Value
・作動しなかったコード
Workbooks("集計").Worksheets("Sheet2").Cells(4, 1 + j).Value = Cells(4, 1 + j).Value
後学のため、理由など教えて頂けると幸いです。
回答2件
あなたの回答
tips
プレビュー