Excel VBA Add Worksheet: «Эта команда не может использоваться для нескольких выборов»

Excel 2010:

Для записи этот код работает в течение нескольких месяцев. Однако последние две недели он прекратил работу с ошибкой, описанной в названии. В то время я не вносил изменений в код, что заставляет меня думать, что изменилась среда.

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 

Линия, на которой он ломается, – это вторая строка, линия пытается добавить лист в начале рабочей книги. Для записи на вкладках ALL единственная ячейка выбрана ячейкой A1, и никакие листы не группируются вместе (строка заголовка Excel ничего не говорит о группировках). Я проверил для Скрытых листов и листов VeryHidden, и ни один из них не присутствует.

В примечании, относящейся к MAYBE, другая часть кода вставляет лист в другую часть рабочей книги, и ИТ помещает его в неправильное место (я рассказываю это перед Листом 4, оно помещает его перед Листом 3). Опять же, я проверил на Hidden и VeryHidden листы и не нашел ни одного.

Я начинаю думать, что один из последних обновлений Excel сломал код. В прошлый раз он отключил элементы управления ActiveX, которые я написал, и мне пришлось изменить все на формы, что было неприятно. Я не уверен, как обойти эту ошибку.

Проблема была в Pivot Caches в другом месте книги. Каким-то образом они стали испорченными (несмотря на то, что им было менее 10 минут), и они препятствовали добавлению новых вкладок в книгу.

Итак, я написал подпрограмму, которая «вытирает» все сводные кэши в рабочей книге, установив false для переменной SaveData, а затем сохранит файл. В другом месте кода он закрывает и перезагружает файл, который затем запускает вторую часть этой подпрограммы, чтобы переключить настройки с 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 
  • Excel VBA - Назначение свойств ячейки вызывает номер ошибки 1004
  • Ошибка времени выполнения VBA 91 на второй итерации
  • Цикл VBA выходит из строя вокруг 88-й итерации
  • Ошибка времени выполнения «13» «Несоответствие типа» в случае If Then Statement
  • VBA: копирование всех данных на другой лист книги
  • Excel VBA Vlookup Runtime Ошибка 1004
  • Ошибка времени выполнения VBA 13
  • «Определенная заявка или ошибка с определением объекта» - Возможность запуска сценария на некоторых ПК, но не другие
  • #REF! вставлен как значение, но не рассматривается как таковое при циклировании
  • Сохранять местоположение адреса ячейки переменной в VBA
  • Ошибка выполнения «9» в VBA - Подрезка вне диапазона
  • Interesting Posts
    Давайте будем гением компьютера.