Ошибка 1004 VBA Excel

Обновлено: 20.11.2024

Ошибка выполнения VBA 1004 возникает при выполнении макроса в Excel. Это ошибка, которая может возникнуть по нескольким причинам. В приведенном ниже примере, как вы можете видеть, когда я запускаю код, он показывает ошибку времени выполнения «1004». Проще говоря, вы также можете сказать, что это происходит, когда вы не можете выполнить действие с объектом или приложением.

Error1: Ошибка выполнения VBA 1004: это имя уже занято. Попробуйте другой:

Как я уже говорил выше, когда вы пытаетесь добавить лист с именем, которое уже есть в книге, с помощью кода VBA, VBA показывает вам ошибку времени выполнения с кодом 1004.

Даже если вы попытаетесь переименовать лист, вы получите ту же ошибку от VBA.

В приведенном выше коде я попытался переименовать лист «Лист2» ​​в имя «Лист1», но, как видите, «Лист1» у меня уже есть в книге; VBA показал мне код ошибки 1004.

Чтобы решить эту проблему, нужно проверить, существует ли уже лист в книге или нет.

Error2: Ошибка выполнения VBA 1004: не удалось использовать метод «Диапазон» объекта «_ Global»:

Как вы знаете, вы можете создать именованный диапазон в Excel, но когда вы пытаетесь сослаться на этот именованный диапазон с помощью кода VBA и неправильно написали его имя, вы, вероятно, получите ошибку времени выполнения 1004 Метод " Диапазон» объекта «_ Global» не удалось.

В следующем примере у меня есть именованный диапазон с именем «myRange», но при написании макроса я неправильно написал его как «myRang», хотя это опечатка; VBA не настолько умен, чтобы идентифицировать эту ошибку и ссылаться на правильный именованный диапазон.

Error3: Ошибка выполнения VBA 1004: не удалось выбрать метод класса Range:

Когда вы используете код VBA для выбора диапазона, которого нет на активном рабочем листе, VBA покажет вам ошибку времени выполнения 1004. Потому что, если вы хотите выбрать ячейку или диапазон ячеек для определенного рабочего листа, быть активным в этот момент.

Вы не можете выбрать ячейку на листе1, если в данный момент активен лист2.

Как вы можете видеть в следующем примере, я допустил ту же ошибку, когда ссылаюсь на ячейку A1 из листа 1, но активен лист 2.

Лучший способ справиться с этой ошибкой — сначала активировать лист, а затем написать строку кода, которая выбирает ячейку или диапазон из этого листа. Вы также можете проверить, активен ли лист, а затем выбрать ячейку на этом листе, и если каким-то образом этот лист не активен, вы можете показать пользователю сообщение, чтобы сначала активировать этот лист.

Error4: Ошибка выполнения VBA 1004. Не удалось активировать класс диапазона методов:

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

В примере с информацией, когда я пытался активировать ячейку A1 на листе 1, я получил ошибку выполнения 1004, если активным листом был лист 2.

Чтобы снова справиться с этой ошибкой, вам нужно убедиться, что рабочий лист, на который вы ссылаетесь, активен или нет. Или вы также можете проверить, есть ли этот лист в книге или нет.

Ошибка 5: метод VBA Runtime Error 1004 Извините, мы не смогли найти:

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

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

Ошибка 6: Ошибка выполнения VBA 1004, метод открытия книг объектов не выполнен:

Эта ошибка также связана с книгой.Поэтому, когда вы пытаетесь открыть книгу с именем, для которого книга уже существует и открыта в данный момент, VBA покажет вам ошибку времени выполнения 1004 (сбой метода открытия книг объектов).

То же самое произошло в приведенном выше примере, когда я попытался открыть книгу, которая уже открыта, и VBA показал мне ошибку времени выполнения (1004).

Как исправить среду выполнения VBA (ошибка 1004)

Ошибка 1004 — это ошибка времени выполнения, которая возникает при выполнении кода VBA. И все ошибки, которые мы обсуждали выше, связаны с человеческими ошибками при написании кода, следуя пунктам, которые вы можете использовать, чтобы избежать ошибки времени выполнения 1004.

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

Ошибка VBA 1004 в Excel

Ошибка VBA 1004 — это ошибка времени выполнения в VBA, возникающая при выполнении кода. Ошибки являются неотъемлемой частью кодирования, особенно когда вы пишете впервые, вы можете столкнуться со многими ошибками в VBA. Это свойственно всем, и в этом нет ничего страшного.

Однако знание того, почему это произойдет, поможет вам избежать этих ошибок в ближайшем будущем.

В этой статье мы обсудим одну из важных ошибок Excel «Ошибка VBA 1004».

6 основных ошибок выполнения Excel VBA 1004

Эта ошибка возникает при переименовании листа.

Если имя рабочего листа уже существует и вы пытаетесь присвоить то же имя другому листу, VBA выдает ошибку времени выполнения 1004 с сообщением «Имя уже занято. Попробуйте другой».

Например, взгляните на приведенный ниже код.

Код:

Я пытаюсь переименовать лист 2 в лист 1. Но у меня уже есть лист с именем «Лист1».

Если я запущу этот код с помощью клавиши F5 или вручную, я получу ошибку времени выполнения 1004: это имя уже занято. Попробуйте другой.

Поэтому попробуйте соответствующим образом переименовать лист.

Для этого я назвал диапазон ячеек "Заголовки", как показано на изображении ниже.

Теперь, используя объект Range, я могу получить доступ к этому диапазону.

Код:

Если вы запустите этот код, нажав клавишу F5, этот код выберет именованный диапазон.

Но если я укажу именованный диапазон неправильно, я получу ошибку времени выполнения 1004: метод «Диапазон» объекта «_ Global» не выполнен.

Код:

Запустите этот код вручную или с помощью клавиши F5 и посмотрите результат.

Обычно это происходит, когда мы пытаемся выбрать ячейки, отличные от активного листа, не делая лист выбранным или активным.

Например, взгляните на приведенный ниже код.

Код:

В приведенном выше коде предлагается выбрать ячейки с A1 по A5 на листе «Лист1». Для эксперимента мой текущий активный лист — «Лист2», а не «Лист1».

Я запущу этот код с помощью клавиши F5 или вручную, чтобы посмотреть, что произойдет.

Получена ошибка времени выполнения 1004: не удалось выбрать метод класса диапазона. Это потому, что, не активируя лист, мы пытаемся выбрать ячейки этого листа. Итак, во-первых, нам нужно активировать Sheer, прежде чем мы выберем ячейки. Ниже приведен правильный код.

Обычно это происходит, когда вы пытаетесь открыть книгу, имя которой совпадает с именем другой книги, которая уже открыта.

Например, взгляните на приведенный ниже код.

Код:

Это вызовет следующую ошибку.

Эта ошибка возникает из-за того, что вы пытаетесь открыть файл, который не существует по указанному пути. Это может быть перемещено, переименовано или удалено из указанного пути. Одна из причин этого из-за неправильного типа пути или имени файла с расширением Excel Расширение Excel Расширения Excel представляют собой формат файла. Это помогает пользователю сохранять различные типы файлов Excel в различных форматах. Например, .xlsx используется для простых данных, а XLSM используется для хранения кода VBA. читать дальше.

Теперь взгляните на приведенный ниже код.

Код:

Этот код предлагает открыть файл «ABC.xlsx» по указанному пути к папке.

Конечно, я знаю, что в указанной папке нет файла. Если в указанной папке нет файла, мы получим метод Runtime Error 1004. Извините, мы не смогли его найти.

Эта ошибка возникает в основном из-за активации диапазона ячеек без активации рабочего листа.

Например, взгляните на приведенный ниже код.

Код:

Эта ошибка очень похожа на ту, которую мы видели в ошибке времени выполнения 1004: не удалось выбрать метод класса диапазона.

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

Потому что без активации листа мы не можем активировать в нем ячейки. Итак, сначала активируйте лист, а затем активируйте ячейки этого листа.

Рекомендуемые статьи

Это руководство по ошибке VBA 1004. Здесь мы обсудим 6 основных типов ошибок выполнения 1004 в VBA и способы их исправления вместе с примерами и загружаемыми шаблонами. Ниже приведены некоторые полезные статьи, связанные с VBA –

Ошибка VBA 1004 — это ошибка, с которой мы сталкиваемся при выполнении кода в VBA. Она также известна как ошибка времени выполнения VBA. Работая в VBA или любом другом языке программирования или даже в повседневной работе, мы сталкиваемся с различного рода ошибками. Иногда даже мы пропускаем один символ в коде, из-за чего весь код не работает или, возможно, весь код неверен.

Ошибки, безусловно, являются частью кода, который мы пишем. Это может быть непреднамеренно, но они существуют. Независимо от того, насколько мы профессиональны в программировании, ошибка времени выполнения может возникнуть где угодно. Как объяснялось выше, ошибка VBA 1004 — это ошибка, возникающая во время выполнения кода в Excel. Ее также называют ошибкой, определяемой приложением или ошибкой, определяемой объектом.

Оценка, Hadoop, Excel, мобильные приложения, веб-разработка и многое другое.

Существуют разные причины, по которым мы получаем ошибку выполнения VBA 1004 в Excel, давайте рассмотрим некоторые из них.

  • Ошибка выполнения VBA 1004: сбой метода «диапазон» объекта «_ Global»:

Эта ошибка возникает, когда значение диапазона, которое мы ссылаемся на VBA, неверно. Это также называется методом «Диапазон» объекта «_ Global» не удалось.

  • Ошибка выполнения VBA 1004: это имя уже занято. Попробуйте другой:

Мы даем то же имя рабочему листу, который уже занят другим рабочим листом.

  • Ошибка выполнения VBA 1004: невозможно получить свойство select класса Range:

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

  • Ошибка выполнения VBA 1004: сбой метода «Открыть» объекта «Рабочие книги»:

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

Эта ошибка возникает при попытке открыть несуществующий рабочий лист.

Как мы узнали, могут быть разные причины, по которым мы получаем ошибку во время выполнения. Ошибка выполнения может возникнуть в любой строке кода. Нам нужно научиться обрабатывать эти ошибки, и это называется обработкой ошибок VBA.

Пример ошибки выполнения VBA 1004 в Excel

Теперь, когда я описал различные типы ошибок, которые могут возникнуть во время выполнения любого кода VBA, теперь давайте рассмотрим их появление на примерах.

Как объяснялось в отношении этой ошибки, эта ошибка возникает, когда мы ссылаемся на неправильное именованное значение диапазона в VBA. Это может произойти, если мы допустим орфографическую ошибку в именованном диапазоне, чтобы сослаться на диапазон, который даже не существует. Чтобы продемонстрировать это, давайте сначала создадим именованный диапазон. У меня есть следующие данные здесь.

  • Давайте назовем заголовок этой таблицы DATA.

  • Перейдите на вкладку "Разработчик", щелкните Visual Basic, чтобы открыть редактор VB.

  • Объявите подфункцию, чтобы начать писать код.

Код:

  • Вызов заголовка, который мы назвали, с помощью следующего кода, написанного ниже.

Код:

  • Когда мы запускаем код, мы видим в Excel, что он был выбран, поскольку мы правильно назвали заголовок.
  • Теперь мы неправильно написали название заголовка.

Код:

Мы получаем ошибку выполнения Excel VBA 1004, потому что неправильно написали имя диапазона.

Эта ошибка возникает, когда мы пытаемся переименовать рабочий лист с именем, которое уже занято. Например, я переименовал лист 1 в «Ананд», и я попытаюсь переименовать лист 2 таким же образом, а затем посмотрю результат.

  • Перейдите на вкладку "Разработчик", щелкните Visual Basic, чтобы открыть редактор VB.
  • Объявите подфункцию, чтобы начать писать код.

Код:

  • Попробуйте переименовать лист 2 как Anand, используя следующий код, приведенный ниже.

Код:

Когда я пытаюсь переименовать лист с уже занятым именем, я получаю сообщение об ошибке.

Я попытаюсь добавить значение из листа 2 в переменную на листе 3. Но я не буду активировать лист 2 и посмотрю, что произойдет.

  • Перейдите на вкладку "Разработчик", щелкните Visual Basic, чтобы открыть редактор VB.
  • Объявите подфункцию, чтобы начать писать код.

Код:

Код:

  • В переменной B сохраните значение A в дополнение к ячейке A1 листа 2.

Код:

  • Предположим, что код работает, и используем функцию msgbox для отображения значения B.

Код:

Мы получаем эту ошибку, потому что мы не активировали лист 2, но пытаемся использовать значение листа 2.

Мы сталкиваемся с этой ошибкой выполнения, когда у нас уже открыта книга с таким же именем, но мы пытаемся открыть ее снова.

Для этого примера я уже переименовал свою книгу в VBA 1004 Error.xlsm и попытаюсь снова открыть ее, которая уже открыта, и посмотреть, не появится ли ошибка VBA 1004.

  • Перейдите на вкладку "Разработчик", щелкните Visual Basic, чтобы открыть редактор VB.
  • Объявите подфункцию, чтобы начать писать код.

Код:

Код:

Попробуйте открыть книгу, которую мы уже открыли, используя следующий код.

Код:

Запустите приведенный выше код, чтобы увидеть результат.

Мы получаем эту ошибку, потому что мы уже открыли ту же книгу.

Эта ошибка возникает, когда мы пытаемся открыть несуществующую книгу. Это чем-то похоже на приведенную выше ошибку, которую мы получаем, когда VBA не может найти книгу.

  • Перейдите на вкладку "Разработчик", щелкните Visual Basic, чтобы открыть редактор VB.
  • Объявите подфункцию, чтобы начать писать код.

Код:

  • Попробуйте открыть любую книгу со следующим кодом,

Код:

  • Я уже удалил лист из местоположения.
  • Запустите код, чтобы увидеть результат.

Поскольку лист не существует в указанном месте, мы получаем эту ошибку.

Что нужно помнить

  • Всегда проверяйте наличие орфографических ошибок.
  • Не переименовывайте несколько листов с одним и тем же именем.
  • Перед вызовом любой другой ссылки обязательно активируйте соответствующий рабочий лист.
  • Прежде чем пытаться открыть любой другой рабочий лист, убедитесь, что указан правильный путь.

Рекомендуемые статьи

Это руководство по ошибке VBA 1004. Здесь мы обсудили ошибку времени выполнения Excel VBA 1004 вместе с практическими примерами и загружаемым шаблоном Excel. Вы также можете ознакомиться с другими нашими рекомендуемыми статьями –

Ошибка выполнения VBA 1004 может быть вызвана многими причинами. В этой статье я покажу несколько различных ситуаций и покажу, как с ними справляться.

Код VBA относится к несуществующему диапазону

Этот код обычно возникает, когда код VBA ссылается на несуществующую ячейку или диапазон. Например, этот код правильный.

Но когда вы попытаетесь получить доступ к следующим диапазонам, программа вернет ошибку в обоих случаях.

В первой строке возвращена ошибка 1004, поскольку Excel содержит только 16 384 столбца, а последний столбец — XFD. Во втором случае у нас нет диапазона «myRange». В этом случае приложение также возвращает ошибку. После того как вы создадите диапазон, ошибка не появится.

Вы должны быть очень внимательны при использовании циклов, особенно для столбцов. Вы можете выйти из индекса, не заметив этого.

Вы пытаетесь ввести значение, не являющееся диапазоном

Следующий код приведет к ошибке, поскольку программа не может распознать значения внутри свойства Range как диапазон.

Явно выберите рабочий лист

Иногда при неявном выборе листа может возникнуть ошибка 1004.

Взгляните на этот код. Здесь вы выбрали активный лист, но активация другого листа может привести к ошибке.

Вместо этого используйте код при явном выборе имени листа.

Вы используете защищенный режим

Вы также можете получить ошибку 1004, если ваш лист находится в защищенном режиме. Отключение защиты может устранить эту ошибку.

Макрос записывается на уровне рабочего листа

Иногда вы можете получить эту ошибку, если записываете макрос на уровне рабочего листа. Вы должны создать модуль и ввести код туда. Для этого перейдите в VBE (Alt + F11) и щелкните правой кнопкой мыши значок модуля. Вставьте новый модуль и введите там свой код.

Эти ситуации чаще всего приводят к возникновению ошибки 1004. Я надеюсь, что это решило вашу проблему.

Читайте также: