1

Моя конечная цель здесь - иметь кнопку, которая при нажатии создает новый лист с таблицей на нем ... эта новая таблица должна быть добавлена в список мастера сводных таблиц.

Вызываемая ошибка

сообщение об ошибке 1004 Сбой метода PivotTableWizard рабочей таблицы

Dim NewShop As Variant
NewShop = InputBox("What Shop are you creating a new estimate sheet for? (example: Shop 18)")

NewShop = Replace(NewShop, " ", "_")

Sheets("CE_Template").Select
Sheets("CE_Template").Copy After:=Sheets("Project Estimator")
ActiveSheet.Name = NewShop

If ActiveSheet.Name = "CE_Template" Then
    Exit Sub
Else
    Range("C4").Value = NewShop
    ActiveSheet.ListObjects(1).Name = NewShop
End If

Dim MyArray() As String
Dim ArraySize As Integer
Dim ws As Worksheet
Dim tbl As ListObject

ArraySize = 0

ReDim MyArray(0 To 0)

For Each ws In ActiveWorkbook.Worksheets
    For Each tbl In ws.ListObjects
        ReDim Preserve MyArray(ArraySize) As String
        MyArray(UBound(MyArray)) = tbl.Name & "[#All]"
        ArraySize = ArraySize + 1
    Next tbl
Next ws

Sheets("Project Estimator").Select
Range("A17").Select
ActiveSheet.PivotTableWizard SourceType:=xlConsolidation, SourceData:=MyArray

Изменить: мой предыдущий вопрос был, как добавить элементы в массив, который с тех пор был решен. Спасибо. Пожалуйста, смотрите новый вопрос.

1 ответ1

0

Это решит вашу непосредственную проблему, вам нужно добавить эту строку перед циклом:

ReDim MyArray(0 To 0)

Когда вы используете Dim MyArray() вы создаете массив без индексов, поэтому вы не можете присвоить ему значения без предварительного использования ReDim .

Вам также необходимо изменить ReDim в вашем цикле на ReDim Preserve . Если вы просто используете ReDim он будет каждый раз уничтожать содержимое вашего массива.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .