Ошибка выполнения VBA 1004 «Ошибка, определяемая приложением или объектом» при выборе диапазона
Ошибка времени выполнения VBA 1004 Ошибка, определяемая приложением или объектом
У меня возникает проблема с ошибкой 1004 «Ошибка, определяемая приложением или объектом» при выборе диапазона.
Я все еще могу выбирать строки (т.е. Rows(’21:21′).select ) и выбрать диапазоны на других листах той же книги. Я не верю, что ошибка в коде. Может быть, это какая-то настройка, о которой я не знаю?
Я использовал один и тот же код много раз раньше, но по какой-то причине я не могу заставить его работать в этой подпрограмме (я прокомментировал, где возникает ошибка) .
Мне нужно поработать воображение в моем копировании, так как количество строк будет часто меняться. Опять же, приведенный ниже код ранее использовался без ошибок . но не в этом случае.
Возможно, ваш код находится за Sheet1, поэтому, когда вы меняете фокус на Sheet2, объекты не могут быть найдены? В этом случае может помочь простое указание целевого рабочего листа:
Я не очень знаком с тем, как работает Select, потому что стараюсь по возможности избегать этого :-). Вы можете определять диапазоны и управлять ими, не выбирая их. Также неплохо четко описывать все, на что вы ссылаетесь. Таким образом, вы не потеряете счет, переходя с одного листа или книги на другой. Попробуй это:
Это немного поздно, но может быть полезно для справок в будущем. У меня была такая же проблема, и я думаю, это потому, что макрос был размещен на уровне рабочего листа. Щелкните правой кнопкой мыши узел модулей в окне проекта VBA, нажмите «Вставить» => «Модуль», затем вставьте макрос в новый модуль (убедитесь, что вы удалили тот, который был записан на уровне рабочего листа).
- Кажется, в этом и заключается проблема! Я использовал кнопку, записанную на уровне рабочего листа, скопированную и вставленную в модуль, и это сработало потрясающе! Большое спасибо!
- СПАСИБО X10000! Это была моя проблема. Я просто хотел бы понять, почему это было проблемой. Все, что я делаю, это сравниваю даты между ячейками A и B, а затем меняю цвет. В любом случае большое спасибо!
То же самое случилось со мной. В моем случае большая часть рабочего листа находилась в защищенном режиме (хотя ячейки, относящиеся к макросу, были разблокированы). Когда я отключил защиту на листе, макрос работал нормально . похоже, VBA не любит заблокированные ячейки, даже если они не используются макросом.
У меня тоже была такая же проблема, и я чуть не сошел с ума. Решение было довольно неожиданным.
Мой Excel поставляется по умолчанию, поэтому я ввожу формулы в ячейку Excel следующим образом:
Обратите внимание, что параметры разделяются точкой с запятой. ; . Теперь, если вы вставите именно эту строку в формулу в VBA, например, например:
Вы получите эту ошибку 1004 без каких-либо объяснений. Я потратил часы, чтобы отладить это . Все, что вам нужно сделать, это заменить все точки с запятой на запятые.
- Обратите внимание, что этот ответ может на самом деле не решить эту конкретную проблему, но поскольку этот вопрос был единственным, который подходил к моей проблеме, я публикую свой ответ здесь. Пожалуйста, прокомментируйте или проголосуйте против, чтобы у меня был стимул позже открыть свой вопрос и разместить там этот ответ
Сейчас не произойдет, я занят на работе.
- +1 Мужик это безумие, ТАКОЕ СПАСИБО. Я был заблокирован на несколько часов по этой проблеме. Вот почему я абсолютно НЕНАВИЖУ VBA.
Некоторые операции в Excel ограничены доступной памятью. Если вы повторяете один и тот же процесс снова и снова, это может вызвать переполнение памяти, и Excel больше не сможет его повторить. Это случилось со мной, когда я пытался создать несколько листов в одной книге.
Может появиться сообщение об ошибке «Ошибка выполнения 1004» при программной настройке строки большого массива для диапазона в Excel 2003
В Office Excel 2003 при программной установке значения диапазона с помощью массива, содержащего большую строку, может появиться сообщение об ошибке, подобное приведенному ниже:
Ошибка времени выполнения «1004». Ошибка, определяемая приложением или операцией.
Эта проблема может возникнуть, если одна или несколько ячеек в массиве (диапазоне ячеек) содержат символьную строку, которая содержит более 911 символов.
Чтобы обойти эту проблему, отредактируйте сценарий так, чтобы ни одна ячейка в массиве не содержала символьной строки, содержащей более 911 символов.
Например, следующая строка кода из приведенного ниже примера блока кода определяет символьную строку, содержащую 912 символов:
Другие версии Excel или бесплатные альтернативы, такие как Calc, также должны работать.
Я мог бы удалить ошибку (ошибка времени выполнения «1004». Ошибка, определяемая приложением или операцией), определяя счетчики как одиночные.
У меня была аналогичная проблема, и я исправил ее, выполнив следующие действия:
Вам нужно перейти на лист базы данных, чтобы получить первую пустую строку, вы можете попробовать этот метод.
Вы можете использовать следующий код (например, если нужно было скопировать данные ячейки из Sheet2 к Sheet1 ).
- Не могли бы вы уточнить свой ответ, включив в него объяснение того, как работает ваш код, и пожалуйста, не пишите это так, как будто вы пишете другу. Если вы не знаете, как отвечать на вопросы о StackOverflow, прочтите это. Приветствую и счастливых ответов!
У меня была аналогичная проблема, но оказалось, что я просто ссылался на ячейку, которая была за пределами страницы
У меня была аналогичная проблема при попытке зациклить на каждом листе книги. Чтобы решить эту проблему, я сделал что-то вроде этого
Надеюсь, ты сможешь адаптировать это к своей ситуации
Я столкнулся с той же проблемой и обнаружил, что у человека, создавшего рабочий лист, было заблокировано несколько столбцов. Я снял защиту и все заработало как задумано.
У меня такая же проблема, и я решил, как показано ниже.
в макросе есть переменная с именем rownumber, и изначально я установил ее как ноль. это ошибка, потому что ни один лист Excel не содержит нулевой номер строки. когда я устанавливаю 1 и увеличиваю то, что хочу.
теперь он работает нормально.
У меня тоже была похожая проблема. После копирования и вставки на лист я хотел, чтобы курсор / выбранная ячейка была A1, а не диапазоном, в который я только что вставил.
но получил ошибку 400, которая на самом деле была ошибкой 1004
Вам необходимо активировать лист перед изменением выбранной ячейки, это сработало
Вам необходимо выяснить настоящую причину этой распространенной ошибки: 1004. Отредактируйте код функции / VBA и запустите программу в режиме отладки, чтобы определить строку, которая ее вызывает. А затем добавьте ниже фрагмент кода, чтобы увидеть ошибку,
Примечание. Сочетания клавиш отладки, которые я использую на ПК: «Шаг с заходом» (F8), «Шаг вперед» (Shift + F8), «Выход» (Ctrl + Shift + F8).
У меня возникла эта проблема во время разработки / отладки VBA внезапно, потому что некоторая (неизвестная мне) функция (ality) вызвала блокировку ячеек (возможно, переименование именованных ссылок на каком-то проблемном этапе).
Разблокировка ячеек вручную работал нормально:
[expert_bq id=»1570″]Чтобы обойти эту проблему, отредактируйте script, чтобы никакие ячейки в массиве не содержали символьную строку, содержащую более 911 символов. Если же вы хотите что-то уточнить, обращайтесь ко мне![/expert_bq] Вам нужно выяснить фактическую причину этого общего кода ошибки: 1004. Измените код функции /VBA и запустите программу в режиме отладки, чтобы определить строку, вызывающую ее. Затем добавьте ниже фрагмент кода, чтобы увидеть ошибку,VBA Runtime Error 1004 Определенная пользователем или объектная ошибка при выборе диапазона (vba, excel-vba, excel)
- Обратите внимание, что этот ответ может на самом деле не решить эту конкретную проблему, но поскольку этот вопрос был единственным, который подходил к моей проблеме, я публикую свой ответ здесь. Пожалуйста, прокомментируйте или проголосуйте против, чтобы у меня был стимул позже открыть свой вопрос и разместить там этот ответ
Сейчас не произойдет, я занят на работе.
- +1 Мужик это безумие, ТАКОЕ СПАСИБО. Я был заблокирован на несколько часов по этой проблеме. Вот почему я абсолютно НЕНАВИЖУ VBA.
У меня возникла эта проблема во время разработки/отладки VBA внезапно, потому что какая-то(неизвестная мне) функция (ality) вызвала блокировку ячеек (возможно, переименование именованных ссылок на каком-то проблемном этапе ).