代码不会转到下一张表,只更改活动表
Posted
技术标签:
【中文标题】代码不会转到下一张表,只更改活动表【英文标题】:code not going to the next sheet , just changes only active sheet 【发布时间】:2017-09-16 13:26:39 【问题描述】:我目前正在编写一个简单的宏(见下文)。我打算让宏更改我工作簿中的所有工作表。但是,它只会更改我所在的活动工作表中的单元格,我必须手动移动到下一张工作表并运行宏来更改当前的单元格,但这很乏味,尤其是当我有大约 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
【问题讨论】:
【参考方案1】:您需要在For Each sh In ActiveWorkbook.Worksheets
循环中限定Range
与sh
工作表对象一起使用。
试试下面的代码:
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
【讨论】:
这行得通,但你能解释一下为什么吗?我不明白你的资格是什么意思。 @SergioOropeza 在您的代码中使用Range("$F$5") = "toothwidth"
,这意味着在ActiveSheet
中查找此范围。如果您 ass sh.Range("$F$5") = "toothwidth"
,则意味着使用 sh
工作表限定您的范围。
简而言之,您的With
语句对Range
毫无用处,您可能已经忽略了该行。当您使用.Range
将您的语句链接到您之前在代码中所做的With sh
语句时。
这里是一个“真实世界”的例子。 .....您正在教学校课程。 .....你给每个学生三本书......数学书,历史书和科学书......你告诉全班“打开一本书”......所以现在,一些学生会打开数学书,有些人会打开历史书,有些人会打开科学书。 ....现在说“转到第 34 页”...就像 Range("$F$5")
......现在完全限定页面“转到数学书,第 34 页”......类似于这个worksheets("sheet1").Range("$F$5")
@SergioOropeza 如果您的问题得到解决,请单击我的答案左侧的灰色复选标记,将其标记为“ANSWER”以上是关于代码不会转到下一张表,只更改活动表的主要内容,如果未能解决你的问题,请参考以下文章