我正在尝试将VBA应用于具有多个工作表的工作簿,其中sheetnames
是可变的但是失败。
我的代码仅适用于有效工作表。
请帮我看看有什么问题?
Sub sample_code()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
With ws
Range("A1").Value = "test each worksheet"
End With
Next ws
End Sub
答案 0 :(得分:3)
很抱歉,目前无法对此进行测试,但是可以进行以下操作吗?
Sub sample_code()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
With ws
.Range("A1") = "test each worksheet"
' (.Range("A1").Value is okay too)
End With
Next ws
End Sub
答案 1 :(得分:3)
您应完全符合Cell A1
范围 - 例如 .Range("A1")
Intro to VBA: The Excel Object Hierarchy ( Jon Acampora )
在顶部是Excel应用程序。 Excel中的所有对象都是Application对象的成员或子成员。
每个单词之间的点允许我们从上到下引用层次结构的成员
记住VBA允许我们在引用对象时做出假设。如果未在一行代码中指定工作簿或工作表,则VBA假定您指的是活动工作簿和活动工作表。
例如,以下代码行将清除活动工作表上所有单元格的值和公式。
Cells.ClearContents
如果您没有告诉VBA哪个工作簿要清除哪个工作簿,那么这可能会造成灾难!您无法撤消该操作。
所以你想要对这行代码进行限定,告诉VBA你指的是哪个工作簿和工作表。
Workbooks("Book1.xlsx").Worksheets("Sheet1").Cells.ClearContents