2016-10-11 6 views
0

У меня есть записанный макрос, который я попытался упростить, получив несколько операторов активации и выбора в одну строку, но это приводит к ошибке выполнения.Excel VBA - ошибка времени выполнения 1004 при упрощении записанного кода

Это не критическая проблема, но мне просто интересно узнать, что происходит. Это мой начальный фрагмент кода (он предшествует копирования фрагмента в порядке):

ThisWorkbook.Activate 
Sheets("MS Act Report").Select 
Range("G1").Select 
ActiveSheet.Paste 

это мой упрощенный код:

ThisWorkbook.Activate 
Sheets("MS Act Report").Range("G1").Select 
ActiveSheet.Paste  

При запуске этого я получаю

runtime error '1004': Select method of Range class failed

+0

Вы можете выбрать только диапазоны на активном листе. Если «Отчет о MS Act» не является активным листом, вы не можете выдать команду .select для своих ячеек. – vacip

+3

Вам все равно не нужно выбирать: 'ThisWorkbook.Sheets (« Отчет о MS Act »). Диапазон (« G1 »). PasteSpecial' – Rory

+0

@vacip - спасибо. Поэтому, используя отдельные команды выбора, лист активируется, но это не так, если у меня есть это на одной строке. – doterfish

ответ

2

Вы можете выбирать диапазоны только для активных sh восточноевропейское время. Если «Отчет о MS Act» не является активным листом, вы не можете выдать команду .select для своих ячеек. Чтобы упростить код, вместо копирования, просто установите диапазоны равными.

Thisworkbook.WorkSheets("MS Act Report").Range("G1:I5").Value= _ 
    ActiveWorkbook.Worksheets("Whatever").Range("a1:c5").Value 

Некоторые рекомендуемые чтения: How to avoid using select

+0

спасибо за предложения, но диапазон, который был скопирован, различен каждый раз, когда выполняется процедура, поэтому мне нужно будет обойти это. Поэтому предложение Рори выше кажется более простым. – doterfish

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

  • Нет связанных вопросов^_^