所以我试图在除一个工作表之外的所有工作表上编辑Range。到目前为止,我想出了这个
Sub Test2()
Dim WS As Worksheet
For Each WS In ActiveWorkbook.Worksheets
If WS.Name <> "Summary" Then
Range(Cells(1, 3), Cells(1, 3)) = "test"
MsgBox WS.Name
End If
Next WS
End Sub
应该把&#34;测试&#34;在单元格C3中未命名为Summary的每个工作表上。相反,它只是添加&#34; test&#34;到活动表,没有其他人。消息框工作正常。 完整的项目包括根据字符串长度条件在每张纸上编辑一些单元格,但是我在多张纸上编辑范围。
帮助将不胜感激!
答案 0 :(得分:3)
您需要限定对工作表WS
的引用。使用Range(Cells(1, 3), Cells(1, 3))
引用一组单元格。请改用WS.Range("C3")
或WS.Cells(3,3)
。
Sub Test2()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
With ws
If .Name <> "Summary" Then
.Range("C3") = "test"
MsgBox .Name
End If
End With
Next ws
End Sub
答案 1 :(得分:1)
只需将语句Range(Cells(1, 3), Cells(1, 3))
更改为
WS.Range("C1") = "test"
然后它会正常工作。或者,您可以使用
WS.[C1] = "test"
答案 2 :(得分:0)
Thomas显示的方法是循环遍历每个工作表,我想要突出显示一个方法,如果你有多个包含名称“摘要”的工作表。由于您不能使用多个具有相同名称的工作表,因此必须单独命名,例如“摘要1”,“摘要2”等...
可以使用InStr()
函数对此进行测试,以查看工作表名称中是否有字符串Summary
:
Sub Test2()
For Each ws In ActiveWorkbook.Worksheets
With ws
If InStr(1, .Name, "Summary") = False Then
.Range("C3") = "test"
MsgBox .Name
End If
End With
Next ws
End Sub