Я получаю сообщение «ошибка компиляции: не удается назначить свойство только для чтения». Я не уверен, в чем проблема, может ли кто-нибудь увидеть проблему? кажется, это строка 6

#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 в качестве рабочего листа в начале, Где бы вы посоветовали мне написать это после назначения на новый рабочий лист?