#excel #vba #automation
Вопрос:
With wsData
LastRow = .Cells(Rows.Count, "A").End(xlUp).Row
LastColumn = .Cells(1, Columns.Count).End(xlToLeft).Column
Set DataRange = .Range(Cells(1, 1), .Cells(LastRow, LastColumn))
Set wsPT = wb.Worksheets.Add
wsPT.Name = "Pivot Table"
Set PTCache = wb.PivotCaches.Create(xlDatabase, DataRange)
Похоже, ошибка отображается для «Имени» в строке 5
Комментарии:
1. Пожалуйста, покажите полный код. Я не вижу никакой ошибки в вашем коде.
2. Вы использовали
Dim wsPT As Worksheet
его перед тем, как добавить на новый рабочий лист? Второй вариант-проблема сwb
я предполагаю, что это означает эту рабочую книгу (ту, в которой есть макрос), а не ActiveWrokbook (ту, в которой запускается макрос). Это может иметь значение, если у вас открыто по крайней мере 2 книги и вы переключаетесь между ними (даже непреднамеренно).3. не эта ошибка, но будет, вы пропускаете a
.
перед первымCells
в этой строке:Set DataRange = .Range(.Cells(1, 1), .Cells(LastRow, LastColumn))
4.
wsPT
должен быть рабочий лист. Он будет кричать на вас во время выполнения за попытку несоответствия типов, но.name
свойство книги доступно только для чтения (вам нужно сохранить, чтобы изменить имя книги), и компилятор его улавливает.5. Я применил Dim wsPT в качестве рабочего листа в начале, Где бы вы посоветовали мне написать это после назначения на новый рабочий лист?