2016-09-19 4 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'. Это заставит ваш код работать медленнее. Вы можете найти дополнительную информацию об этом из [Этот вопрос] (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 «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 
+1

Вы пропустили одно из высказываний 'Select', быстро выкапывая его перед тем, как оно распространится !!!!!! –

+0

Ха-ха я понял, потому что он был включен в исходный код без каких-либо действий по нему, пользователь хотел, чтобы конечная активная ячейка была G1 – PartyHatPanda

+1

Вот что я думал, но ... ooo..yuck! они очень грубые! +1 для размышлений о точке зрения OP, –

Смежные вопросы