Excel VBA添加工作表:“该命令不能用于多个select”

Excel 2010:

为了logging,这段代码已经工作了好几个月。 然而,最近两周,它已经停止了标题中描述的错误。 那段时间我没有修改代码,这使我相信这是改变了的环境。

Sub TableofContents(CurrMonth, CurrYear, Z, Region, RegionName) Sheets.Add(Before:=Worksheets(1)).Name = "1. Table of Contents" '<---- BREAKS HERE Cells.Select With Selection.Font .Name = "Calibri" .Size = 11 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ThemeColor = xlThemeColorLight1 .TintAndShade = 0 .ThemeFont = xlThemeFontMinor End With With Columns("A:A") .ColumnWidth = 6 .NumberFormat = "@" End With Columns("B:B").ColumnWidth = 48 Columns("C:E").ColumnWidth = 11 With Range("A3:E3") .MergeCells = True .Font.Color = vbBlack .Font.Bold = True .Value = "Table of Contents" .HorizontalAlignment = xlCenter .Font.Size = 12 End With With Range("A5:B25") .Font.Color = vbBlack .Font.Bold = True .Font.Size = 11 .HorizontalAlignment = xlRight End With Range("B:B").HorizontalAlignment = xlLeft Select Case Region [Lots of boring code filling in the TOC] End Select End Sub 

它打破的行是第二行,试图在工作簿的开头添加一个工作表的行。 对于logging,在所有选项卡上,唯一选中的单元格是单元格A1,没有表单组合在一起(Excel的标题栏中没有任何关于分组的内容)。 我已经testing过隐藏床单和VeryHidden床单,没有一个在场。

在MAYBE相关说明中,代码的另一部分将工作表的另一部分插入到工作簿的另一部分,而IT将其放在错误的地方(我在第4页之前将它告诉它,它将它放在第3页之前)。 再次,我检查了隐藏和非常隐藏的床单,没有发现。

我开始认为最后一次Excel更新破坏了代码。 上次它禁用了我写的ActiveX控件,我不得不把所有东西都改成表单,这很烦人。 我不确定如何解决此错误。

问题出在工作簿中的其他位置。 不知怎的,他们已经损坏(尽pipe不到10分钟),他们阻止任何新的标签被添加到工作簿。

于是,我编写了一个子程序,通过将SaveDatavariables设置为false来擦除工作簿中的所有透视图caching,然后保存该文件。 在代码中的其他地方,它closures并重新加载文件,然后运行该子例程的第二部分,将设置从False切换回True(通常需要先刷新),然后重新保存。

 Sub RebuildAllPivotCaches(Switch) ActiveWorkbook.RefreshAll If Switch = "TurnOff" Then For Temp = 1 To Worksheets.Count - 1 On Error GoTo SkipTemp If Worksheets(Temp).Visible = True Then Worksheets(Temp).Activate For Each PivTable In Worksheets(Temp).PivotTables PivTable.RefreshTable If ActiveSheet.PivotTables(PivTable.Name).SaveData = True Then ActiveSheet.PivotTables(PivTable.Name).SaveData = False Next PivTable SkipTemp: Next Temp ActiveWorkbook.Save Else For Temp = 1 To Worksheets.Count - 1 On Error GoTo SkipTemp2 If Worksheets(Temp).Visible = True Then Worksheets(Temp).Activate For Each PivTable In Worksheets(Temp).PivotTables PivTable.RefreshTable If ActiveSheet.PivotTables(PivTable.Name).SaveData = False Then ActiveSheet.PivotTables(PivTable.Name).SaveData = True Next PivTable SkipTemp2: Next Temp ActiveWorkbook.Save End If End Sub