Ошибка времени выполнения '1004': сбой при выборе метода класса диапазона VBA 2003 - PullRequest
2 голосов
/ 29 марта 2012

Я пытаюсь скопировать столбец с одного листа на другой. Код, который я использую, является записанным макросом и работает нормально, пока я не подключу его к кнопке. При этом выдается «Ошибка времени выполнения« 1004 »: сбой при выборе метода класса диапазона»

Вот код, и я не вижу в этом ничего плохого. Когда я нажимаю «Отладка», он выделяет вторую строку.

Sheets("Count").Select
Columns("C:C").Select
Selection.Copy
Sheets("Add Invintory").Select
Range("b1").Select
ActiveSheet.Paste
Sheets("Count").Select
Sheets("Count").Columns("A:A").Select
Columns("A:A").Select
Selection.Copy
Sheets("Add Invintory").Select
Range("A1").Select
ActiveSheet.Paste

Понятия не имею, в чем проблема. Пожалуйста, помогите

Ответы [ 3 ]

8 голосов
/ 29 марта 2012

Вы всегда должны избегать использования .Select Они являются основной причиной ошибок:)

Вы пытаетесь это сделать?

Sub Sample()
    Sheets("Count").Columns("C:C").Copy _
    Sheets("Add Invintory").Columns("B:B")

    Sheets("Count").Columns("A:A").Copy _
    Sheets("Add Invintory").Columns("A:A")
End Sub
3 голосов
/ 29 марта 2012

Я думаю, проблема в том, что вы написали код в модуле кода другого листа. Если я на Листе 1, напишите, например,

Sheets("Sheet2").Select
Columns("A:A").Select

... тогда Excel предполагает, что вы ссылаетесь на столбцы на листе 1, так как текущий лист обрабатывается по умолчанию. Таким образом, вы сказали Excel «выбрать лист 2», а затем «выбрать столбец на листе 1» ... что он не может сделать, поэтому выдает сообщение об ошибке. Лучшим решением было бы не использовать «Выбрать» ... но вы все равно увидите в коде Сиддхарта, что ему пришлось явно ссылаться на адреса листов

Ваш оригинальный код сработал бы, если бы он был помещен в модуль ThisWorkbook. Места для ввода кода объяснены в конце этого справочного видео Excel

0 голосов
/ 26 апреля 2013

Когда вы помещаете код vba в «код листа представления» .. Там определенно помогает использовать Application.Run ... для запуска макроса.

У меня была проблема, я непосредственно вводил макрос в код листа.. для выбора на другом листе он заявил об ошибке выполнения 1004 .. Поэтому я создал макрос отдельно, а затем поместил Application.Run мой макрос из кода листа.

Отлично работает;)

ЭтоApplication.Run также помогает, когда у вас есть слишком большой макрос, который утверждает, что он не может быть таким большим.Вы можете легко разделить на несколько частей, а затем просто запустить приложения по одному ..;)

...