Loop through all worksheets in workbook

2020-04-16 03:13发布

I want to repeat this code on all the worksheets in a workbook.

There may sometimes be 1-2 worksheets sometimes 50+.

Sub HoursTotal()
'
' HoursTotal Macro
'

Range("F2").Select
ActiveCell.FormulaR1C1 = "=SUM(C[-1])"
Range("F1").Select
ActiveCell.FormulaR1C1 = "Total Hours"
Range("G1").Select


End Sub

3条回答
狗以群分
2楼-- · 2020-04-16 03:22

This should do it.

Sub HoursTotal()
    Dim ws As Worksheet

    For Each ws In Worksheets
        ws.Range("F2").FormulaR1C1 = "=SUM(C[-1])"
        ws.Range("F1").FormulaR1C1 = "Total Hours"
        ws.Range("G1").Select 'I don't think you need this line but I included it anyways
    Next
End Sub
查看更多
我想做一个坏孩纸
3楼-- · 2020-04-16 03:38

You need to activate the worksheet so that excel can make changes to it.

`Sub HoursTotal() Dim ws As Worksheet

For Each ws In Worksheets
    ws.Activate
    ws.Range("F2").FormulaR1C1 = "=SUM(C[-1])"
    ws.Range("F1").FormulaR1C1 = "Total Hours"
    ws.Range("G1").Select 'I don't think you need this line but I included it anyways
Next

End Sub`

查看更多
孤傲高冷的网名
4楼-- · 2020-04-16 03:40

Simple modification of your current code should do it:

Sub HoursTotal()
'
' HoursTotal Macro
'

Dim ws as Worksheet

For Each ws in Worksheets

    ws.Range("F2").Select
    ActiveCell.FormulaR1C1 = "=SUM(C[-1])"
    ws.Range("F1").Select
    ActiveCell.FormulaR1C1 = "Total Hours"
    ws.Range("G1").Select

Next ws

End Sub

But here's what it looks like without the Select's

Sub HoursTotal()
'
' HoursTotal Macro
'

Dim ws as Worksheet

For Each ws in Worksheets

    ws.Range("F2").FormulaR1C1 = "=SUM(C[-1])"
    ws.Range("F1").FormulaR1C1 = "Total Hours"
    ws.Range("G1").Select

Next ws

End Sub
查看更多
登录 后发表回答