2017-09-16 30 views
1

我目前正在寫一個簡單的宏(見下文)。我打算讓宏更改我的工作簿中的所有工作表。但是,它只會改變我所在活動工作表中的單元格,我不得不手動移動到下一個工作表並運行宏來更改當前的單元格,但它非常乏味,特別是當我有大約125個工作表要更新時。代碼不會去下一張表,只是改變活動表

Sub worksheetloop() 

Dim sh As Worksheet 

With ThisWorkbook  
    For Each sh In ActiveWorkbook.Worksheets  
     Range("$F$5") = "toothwidth" ' Key contact 
     Range("$F$8") = "x,y,z" ' Core team 
     Range("$J$5") = "bleh" 'date 
     Range("$L$5") = "9/12/" 'Updated 
     Range("$M$5") = "A" ' Revision Date        
    Next sh  
End With 

End Sub 

回答

3

需要判定你sh工作表對象使用For Each sh In ActiveWorkbook.Worksheets循環內的Range

嘗試下面的代碼:

Dim sh As Worksheet 

For Each sh In ThisWorkbook.Worksheets 
    With sh 
     .Range("$F$5") = "toothwidth" ' Key contact 
     .Range("$F$8") = "x,y,z" ' Core team 
     .Range("$J$5") = "bleh" 'date 
     .Range("$L$5") = "9/12/" 'Updated 
     .Range("$M$5") = "A" ' Revision Date\ 
    End With 
Next sh 
+0

奏效,但你可以解釋,爲什麼?我不明白你的意思是什麼資格。 –

+0

@SergioOropeza在你的代碼中使用'Range(「$ F $ 5」)=「toothwidth」',這意味着在'ActiveSheet'中尋找這個範圍。如果你噓'sh.Range(「$ F $ 5」)=「齒寬」',這意味着用'sh'工作表限定你的範圍。 –

+0

簡而言之,你的'With'語句對'Range'沒有用處,你可能已經把這條線留下了。當你使用'.Range'來將你的語句鏈接到你之前在代碼中做的'With sh'語句時。 –