2016-09-19 176 views
0

我想在工作簿中的所有工作表上重复此代码。循环遍历工作簿中的所有工作表

有时可能有1-2个工作表,有时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 
+0

欢迎来到SO!为了帮助你的代码,尽量避免使用'.Select'。它会让你的代码运行得慢一点。你可以从[This Question]中找到更多关于它的信息(http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros)。 – PartyHatPanda

回答

1

这应该这样做。

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 
1

您当前密码的简单的修改应该这样做:

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 

但这里是什么样子没有Select

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 
+1

你错过了一个'Select'语句,在它传播之前快速挤压它!!!!!! – 2016-09-19 21:44:45

+0

哈哈我想,因为它包含在原始代码中而没有采取任何行动,用户希望结束活动单元格为G1 – PartyHatPanda

+1

这就是我的想法,但是......哦!他们太好了! +1思考OP的观点, – 2016-09-19 21:49:18

相关问题