【发布时间】:2019-09-20 03:07:41
【问题描述】:
我不想为每个特定的工作表编码来格式化特定的表格,而是想创建一个循环,只在不同的工作表上格式化列表中的表格。
当前代码:(sh 和 wbTemplate 在代码前面定义和设置)
Dim AllTableNames As String
Dim TableNames As Variant
Dim i As Long
AllTableNames = "Table_Dormant_Stock,Table_Overstock,Table_Negative_Stock,Table_Outdated_Stock_Counts,Table_Waste_Returns"
TableNames = Split(AllTableNames, ",")
For Each sh In wbTemplate.Worksheets
For i = LBound(TableNames) To UBound(TableNames)
sh.ListObjects(TableNames(i)).DataBodyRange.Font.Size = 10
Next i
Next sh
我得到“运行时错误“9”:下标超出范围”。 我知道它与第二个循环有关,我以前从未这样做过,所以不知道如何修复它。
【问题讨论】:
-
哪一行错误?可能您没有具有该名称的表。
-
您正在尝试刷新 每个 工作表上的所有表。每个工作表上是否有所有 5 个表格的副本?
-
要添加到@CLR 的评论中,表名具有工作簿范围,因此即使您在每张工作表上都有一个副本,名称也会有所不同。
-
如果每张纸上只有一个表格,则根本不需要第二个循环。只需使用索引。
-
sh.ListObjects(1).DataBodyRange.Font.Size = 10.