2016-02-24 3 views
0

Я пытаюсь преобразовать таблицу запросов в таблицу excel из vba, используя приведенный ниже код.Ответ на excel инфо-окно от vba

Set tableRange = Sheets("Fund Performance").Range(Range("C7"),Range("I7").End(xlDown)) 
On Error Resume Next: 
    Sheets("Fund Performance").ListObjects.Add(xlSrcRange, tableRange, , xlYes).Name = Symbol 
On Error GoTo 0 

Без «On Error Resume Next» Я получаю сообщение об ошибке 1004 Таблица не может перекрывать диапазон, который содержит отчет сводной таблицы, результаты запроса, защищенные ячейки или другую таблицу.

Если я включаю его, ошибка не появляется, но таблица также не создается.

Любой совет для решения этого или альтернативного метода создания таблицы excel из таблицы запросов?

ответ

0

Хотя это не решает основную точку вашего вопроса, я хотел бы отметить, что Range object s, которые определяют ваши Sheets («Фонд Performance»). Range не имеет явный рабочий лист родителя. Оставшись полагаться на ActiveSheet property определить родительский лист, это может производить,

Ошибка выполнения 1004:
приложения или объекта определенные ошибки.

Лучшая практика заключается в том, чтобы явно определять все ссылки на родительские листы для построения объекта Range.

'verbose method 
Set tableRange = Sheets("Fund Performance").Range(Sheets("Fund Performance").Range("C7"), Sheets("Fund Performance").Range("I7").End(xlDown)) 

'with ... end with block method; improved readability, faster execution 
With Worksheets("Fund Performance"). 
    Set tableRange = .Range(.Range("C7"), .Range("I7").End(xlDown)) 
End With 

В последнем With ... End With statement метод, обратите внимание на использование .Range и не Range. Период префикса содержит ссылку на родительский лист, отмеченный в поле С ... Конец С блоком. Это означает, что ссылка родительского рабочего листа устанавливается только один раз и повторно используется. В первом, подробном методе ссылка родительского рабочего листа устанавливается и восстанавливается три раза.

Смежные вопросы