Ошибка 424 vba excel
I'm attempting to copy the contents of a text box from one workbook to another. I have no problem copying cell values from the first workbook to the 2nd, but I get an object required error when I attempt to copy the text box. This macro is being run from the workbook containing the data I want copied. Using Excel 2007 Code:
Thanks for any help.
You tried with the full Application.ActiveWorkbook.ActiveSheet.TextBox1? Can you check if the ActiveWorkbook/ActiveSheet isn't xlw? If this is the case, you just have to set an object for your active document before opening another.
I get an 'object doesn't support this property or method' with either of your solutions dnLL & KazJaw
But did you check what ActiveWorkbook/ActiveSheet are referring to? Seems like it refers to xlw (c:\myworkbook.xlsx) and not the document where is located TextBox1 .
test also shorter option . = Activesheet.TextBox1.Text It's important to precede user controls with sheet object. However, if it doesn't work could you make a screen shot of your TextBox and add a link to that picture here?
3 Answers 3
The problem with your macro is that once you have opened your destination Workbook ( xlw in your code sample), it is set as the ActiveWorkbook object and you get an error because TextBox1 doesn't exist in that specific Workbook. To resolve this issue, you could define a reference object to your actual Workbook before opening the other one.
If you prefer, you could also use myWb.Activate to put back your main Workbook as active. It will also work if you do it with a Worksheet object. Using one or another mostly depends on what you want to do (if there are multiple sheets, etc.).
I think the reason that this is happening could be because TextBox1 is scoping to the VBA module and its associated sheet, while Range is scoping to the "Active Sheet".
EDIT
It looks like you may be able to use the GetObject function to pull the textbox from the workbook.
Any idea how I can scope textbox1 to the active sheet? I don't believe I can use ActiveSheet.TextBox1
@dnLL Why? It is an answer, not a comment or question. It's not as thorough as your answer, but it is an answer by definition.
I guess you are referring to the 8th definition. I still don't think that 2 sentences starting with "I think" and "you may be" is an answer.
The issue is with this line
You have the textbox defined at some other location which you are not using here. Excel is unable to find the textbox object in the current sheet while this textbox was defined in xlw.
Hence replace this with
Not the answer you're looking for? Browse other questions tagged excel vba runtime or ask your own question.
Linked
Related
Hot Network Questions
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
Site design / logo © 2022 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2022.5.9.42071
Для ссылок на свойства и методы зачастую требуется явный описатель объекта. Эта ошибка имеет следующие причины и решения:
При ссылке на свойство или метод объекта не указан допустимый описатель объекта. Укажите описатель объекта, если он не задан. Например, можно опустить описатель объекта при ссылке на свойство формы в собственном модуле формы, однако, необходимо явно задать описатель при ссылке на свойство из стандартного модуля.
Описатель объекта указан, но не распознается как объект. Проверьте правильность написания описателя объекта и убедитесь в том, что объект видим в той части программы, где на него присутствует ссылка. В случае с объектами коллекции проверьте все вхождения метода Add, чтобы убедиться в том, что для всех элементов используется правильный синтаксис и правописание.
Указан допустимый описатель объекта, но другие части вызова содержат ошибку. Некорректный путь в качестве аргумента для команды Open File Open для хост-приложения может привести к ошибке. Проверьте аргументы.
При назначении ссылки на объект не использовался оператор Set. Если при назначении возвращаемого значения вызова CreateObject в переменную Variant пропущен оператор Set, ошибка может не возникать. В следующем примере кода создается неявный экземпляр Microsoft Excel, а его свойство по умолчанию (строка "Microsoft Excel") возвращается и назначено варианту RetVal . Последующая попытка использования в RetVal качестве ссылки на объект вызывает эту ошибку:
Используйте оператор Set при назначении ссылки на объект.
В редких случаях эта ошибка возникает при попытке выполнить недопустимое действие в отношении допустимого объекта. Например, ошибка может произойти при попытке присвоить значение свойству "только чтение". Просмотрите документацию по объекту и убедитесь в том, что вы пытаетесь выполнить допустимое действие.
Для получения дополнительной информации выберите необходимый элемент и нажмите клавишу F1 (для Windows) или HELP (для Macintosh).
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
References to properties and methods often require an explicit object qualifier. This error has the following causes and solutions:
You referred to an object property or method, but didn't provide a valid object qualifier. Specify an object qualifier if you didn't provide one. For example, although you can omit an object qualifier when referencing a form property from within the form's own module, you must explicitly specify the qualifier when referencing the property from a standard module.
You supplied an object qualifier, but it isn't recognized as an object. Check the spelling of the object qualifier and make sure the object is visible in the part of the program in which you are referencing it. In the case of Collection objects, check any occurrences of the Add method to be sure the syntax and spelling of all the elements are correct.
You supplied a valid object qualifier, but some other portion of the call contained an error. An incorrect path as an argument to a host application's File Open command could cause the error. Check arguments.
You didn't use the Set statement in assigning an object reference. If you assign the return value of a CreateObject call to a Variant variable, an error doesn't necessarily occur if the Set statement is omitted. In the following code example, an implicit instance of Microsoft Excel is created, and its default property (the string "Microsoft Excel") is returned and assigned to the Variant RetVal . A subsequent attempt to use RetVal as an object reference causes this error:
Use the Set statement when assigning an object reference.
In rare cases, this error occurs when you have a valid object but are attempting to perform an invalid action on the object. For example, you may receive this error if you try to assign a value to a read-only property. Check the object's documentation and make sure the action you are trying to perform is valid.
For additional information, select the item in question and press F1 (in Windows) or HELP (on the Macintosh).
Support and feedback
Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.
Ошибка 424 буквально означает следующее: «требуется объект» или «заблокировано правилами безопасности сайта». Возникает при атаке на сайт популярных CMS, ввиду множественных параллельных запросов или обращение к объекту с ошибкой.
Ошибка 424: Три основные причины и решение
Множественные запросы
Данная ошибка указывает на то, что для выполнения запроса со стороны пользователя должна завершиться еще одна или несколько параллельных операций. В случае, если происходит сбой в одном из процессов, то потеряется все соединение сразу. Таким образом, дальнейшая обработка всего запроса становится невозможной. Подобное может происходить, если некорректно был завершен один из предыдущих процессов. Не путайте данную ошибку с ошибкой 403, когда вам просто запрещен доступ к информации.
Решение проблемы
Завершите параллельные запроса или остановите выполнение команд. В случае, если вы не находите, что именно нужно остановить — проверьте логи. Каждый случай индивидуален, т.к. чаще всего ошибка 424 возникает по другим причинам. Если у вас конкретно эта причина — напишите в комментариях проблему и приложите скриншот. Наш администратор разберёт вопрос в течении 24-х часов.
Правила безопасности CMS сайта
Ошибка 424 может возникнуть, если запрос содержит признаки попытки использования уязвимостей в популярных CMS. Такие запросы совершаются для получения нелегального доступа к управлению веб-страницей. Если пользователь обнаружил эту ошибку — это говорит лишь о том, что кто-то пытался сканировать сайт на наличие уязвимостей, но этого не произошло.
Решение проблемы
Если ошибка 424 возникает на веб-странице, то можно выключить данную опцию. Необходимо перейти в Панель управления — Хостинг — Мои сайты — Логи и нажать на «Error» для просмотра списка (путь может отличаться в зависимости от хостинга). В новом окне нужно начать поиск записи, отображающей запрос. В появившейся строчке выбрать «Выключить правило», и в течение получаса опция отключится.
Не рекомендуется отключать все всплывающие ограничения. Также, помните, что отключение системы безопасности в несколько раз увеличивает риск взлома сайта.
Требуемый объект возвращает ошибку
Так как все компьютерные программы — это длинные строки кода, то они содержат инструкции, которые компьютер будет обрабатывать. Параллельно выполняются функции, которые будут взаимодействовать с множеством различных файлов в системе.
Сбой возникает, если при попытке вызвать объект, который либо не правильно указан, либо не был загружен в систему. В результате ваше приложение выйдет из строя, и вы увидите множество потенциальных ошибок.
Объектами ошибки могут выступать какие угодно переменные: файлы, рабочие листы или модули. Ошибка вызвана тем, что функция вызывается для ссылки, которую вы неправильно написали.
Решение ошибки
Решение проблемы состоит в том, чтобы проверить, что в вашем коде указаны все соответствующие ссылки.
«VBA» (Visual Basic для приложений) используется для создания функциональных возможностей на основе событий (с использованием языка «Visual Basic») в Excel, Word, Powerpoint и других программах. Представленный в 1993 году, VBA является основной частью пакета Microsoft Office.
Ошибки «времени выполнения» — распространенная проблема для многих настольных приложений. Ошибки времени выполнения были проблемой в течение долгого времени.
Они хранятся в трех «слоях»:
- Слой графического интерфейса пользователя (показывает пользователю серию входных данных)
- Уровень приложения (хранит «бизнес-логику» приложения)
- Уровень базы данных (хранящий все функции, методы, переменные и данные, необходимые для работы приложения).
Приложение работает так, чтобы загружать все эти команды в память и предоставлять пользователям возможность взаимодействовать с ними через графический интерфейс.
Ваши действия:
- При обращении к свойству или методу объекта укажите нужный описатель объекта. Следует его указать, если он не задан.
- Допущена ошибка в написании объекта, поэтому не происходит его распознавания. Следует убедиться в правописании той части программы, где присутствует ссылка на объект.
- Правильность написания соблюдена, но стоит пересмотреть другие элементы ссылки, которые содержат ошибки. Необходимо проверить аргументы.
- Если пользователь собирается совершить недопустимую операцию к допустимому объекту. Пример: сбой происходит при попытке присвоить значение свойству «только чтение». Решение: проверить документацию по файлу и убедиться в том, что действие допустимо.
Ошибка 424 и Visual Basic
Одна из наиболее распространенных (и почему существуют ошибки «времени выполнения») заключается в том, что функции внутри этих команд могут ссылаться на скрипт или объект, которых не существует.
Ошибки «времени выполнения» существуют во всех типах программного обеспечения. Это приводит к сбою приложения, и Windows (или любая другая операционная система, которую вы используете) должна будет показать ошибку.
Зачастую, ошибка связана со ссылкой, сделанной на рабочий лист, объект, переменную или файл, которые не загрузились. Это относительно просто решается, но требует терпения и понимания процесса.
Решение проблемы
Для автоматической проверки кода можно использовать функцию «пошагового выполнения кода», которая позволяет визуализировать, как работает каждая строка кода.
Заходим в редактор VBA. Чтобы добраться до него сделайте следующее: Файл — Параметры — Настроить ленту. Затем проверьте, что установлен флажок «Разработчик». Это создаст вкладку «Разработчик» в верхней части экрана. Автоматически запустится поиск возникшей проблемы.
Простой алгоритм решения проблемы вручную:
Есть дополнительные вопросы?
Спроси у нас в комментариях. Мы позовем нашего администратора на помощь. В комментариях должна быть описана суть ошибки, скриншот ошибки.
When I used F8, it said the error is here --> Private Sub UserForm_Initialize()
Try adding UserForm - In the Visual Basic Editor click the Insert UserForm button (or go to Insert > UserForm)
In my case, the debugger highlighted the UserForm.Show line but the problem was in the Userform_Initialize() procedure. I had a line of code unrelated to the UserForm where I had failed to declare an object. The limits of VBA's debugger can throw off your search for the error.
7 Answers 7
This error can also occur when you remove or delete a textbox from your form, but forget to remove it from a line in initialization for eg:
I'm assuming this issue has been resolved, but for anyone just now looking at it. I had this issue and it turned out to be that I had removed a ComboBox from my form, but it was still referenced in the code. Once I removed that section of the code, it worked beautifully.
I was using the same tutorial and solved the problem by changing the Initialize command:
I named my user form (for my own purposes)
and changing the code to
solved the problem. Hope this helps.
Hard to tell based on what you have said. But -- the fact that you said using F8 indicated that the error is in Private Sub UserForm_Initialize() suggests that the userform exists and VBA knows how to find it (otherwise its initialize event wouldn't be firing when you click the form button). Hence -- it is one of the lines in the initialize sub which is the culprit. Which line specifically is flagged? I'm guessing that a simple typo in the name of one of the controls (e.g. DinnerComboBox) is the problem.
I was able to solve these by changing
See if it works
I had this same issue. I was creating the same form in a few workbooks and using the same variable names. I pasted in my code for UserForm_Initialize. Everything looked good in the code, but I went back and double checked my variable names on the form and realized I had forgotten to name two of the text boxes on my form. My code was trying to assign values to txtMaxLines and txtAmount but I hadn't named them on the form, so to the vba it was like they didn't exist.
I hope this will help someone because if you have the same issue as I did, when it opens up the vba editor it doesn't go to the line where the error is and the error description is not helpful at all.
Читайте также: