我知道这个问题已经出现好几次,但我相信我的问题略有不同。
我的目标是出于视觉原因将每个第二行的颜色格式化为excel表格。代码如下:
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
lC = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
For i = 2 To lastRow
On Error GoTo skipColor
Set rng = ws.Range(ws.Cells(i, 1).Address, ws.Cells(i, lC).Address)
rng.Interior.ThemeColor = xlThemeColorDark1
If i Mod 2 = 0 Then
rng.Interior.TintAndShade = -4.99893185216834E-02
Else
rng.Interior.TintAndShade = -0.249977111117893
End If
skipColor:
Debug.Print Err.Description
Next i
循环的迭代总是在完全相同的行停止。似乎Excel缓存已满,无法保存更多单元格格式。我尝试了这个post的解决方案(第二个答案)并将其用于循环的每次迭代。没有成功。
还有一件事:即使我添加了On Error Goto skipColor
行,它仍会显示错误消息。
编辑:我在错误消息上点击调试时突出显示的行是:rng.Interior.ThemeColor = xlThemeColorDark1
。
答案 0 :(得分:0)
您没有正确捕获错误。因为您已放置标签
skipColor:
在循环内部,即使没有错误,也会点击Debug.Print
。
答案 1 :(得分:0)
根据Microsoft知识库文章You receive a "Too many different cell formats" error message in Excel,您似乎已超出允许的不同单元格格式数。
来自文章:
<强>原因强>
当工作簿包含多个时,会发生此问题 Excel中约有4,000种不同的单元格格式组合 2003或更高版本的Excel 2007或64,000。组合定义为a 应用于单元格的唯一一组格式元素。一个 组合包括所有字体格式(例如:字体,字体 边框(例如:位置,大小,斜体,粗体和下划线) 重量和颜色),单元格图案,数字格式,对齐方式和 细胞保护。
注意:如果两个或多个单元格共享完全相同的格式,则使用 一种格式组合。但是,如果有任何差异 在单元格之间进行格式化,每个单元格使用不同的组合。
在Excel样式中,在工作簿之间复制时,计数可能会增加 因为复制了自定义样式。
可以在Excel 2007和Excel中打开具有4,000多种样式的工作簿 更高(因为格式化限制增加)但结果 在Excel 2003中出错。
“解决方案”部分提供了一个名为XLStylesTool的工具的链接,该工具可以帮助您清理工作簿。