代码不会转到下一张表,只更改活动表

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 循环中限定Rangesh 工作表对象一起使用。

试试下面的代码:

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”

以上是关于代码不会转到下一张表,只更改活动表的主要内容,如果未能解决你的问题,请参考以下文章

Facebook 中的 URL 更改 ajax 调用

离子标签不会转到下一页

部署后,fancybox 无法移动到下一张/上一张图片

当我单击此处注册时,它不会转到下一个活动

(相机校准)如何让我的循环读取图像只等待 10 秒,如果没有任何东西移动到下一张图像?

MAC VBA尝试从每个工作表中剪切一个单元格并粘贴到下一个空单元格中的另一张表中