Remkomplekty.ru

IT Новости из мира ПК
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Ошибка времени выполнения basic

Как исправить ошибку времени выполнения Excel — Visual Basic

To Fix (Excel Run Time Error — Visual Basic) error you need to follow the steps below:

Совместимость : Windows 10, 8.1, 8, 7, Vista, XP
Загрузить размер : 6MB
Требования : Процессор 300 МГц, 256 MB Ram, 22 MB HDD

Ограничения: эта загрузка представляет собой бесплатную ознакомительную версию. Полный ремонт, начиная с $ 19.95.

Ошибка времени выполнения Excel — Visual Basic обычно вызвано неверно настроенными системными настройками или нерегулярными записями в реестре Windows. Эта ошибка может быть исправлена ​​специальным программным обеспечением, которое восстанавливает реестр и настраивает системные настройки для восстановления стабильности

Если у вас есть ошибка времени выполнения Excel — Visual Basic, то мы настоятельно рекомендуем вам Скачать (Excel Run Time Error — Visual Basic) Repair Tool .

This article contains information that shows you how to fix Excel Run Time Error — Visual Basic both (manually) and (automatically) , In addition, this article will help you troubleshoot some common error messages related to Excel Run Time Error — Visual Basic that you may receive.

Примечание: Эта статья была обновлено на 2020-03-31 и ранее опубликованный под WIKI_Q210794

Contents [show]

Апрельское обновление 2020:

We currently suggest utilizing this program for the issue. Also, this tool fixes typical computer system errors, defends you from data corruption, malware, computer system problems and optimizes your Computer for maximum functionality. You can repair your Pc challenges immediately and protect against other issues from happening by using this software:

  • 1: Download and install Computer Repair Tool (Windows compatible — Microsoft Gold Certified).
  • 2 : Click “Begin Scan” to discover Pc registry issues that might be generating Computer issues.
  • 3 : Click on “Fix All” to fix all issues.

Значение ошибки времени выполнения Excel — Visual Basic?

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

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

Причины ошибки времени выполнения Excel — Visual Basic?

Если вы получили эту ошибку на своем ПК, это означает, что произошла сбой в работе вашей системы. Общие причины включают неправильную или неудачную установку или удаление программного обеспечения, которое может привести к недействительным записям в вашем реестре Windows, последствиям атаки вирусов или вредоносных программ, неправильному отключению системы из-за сбоя питания или другого фактора, кто-то с небольшими техническими знаниями, случайно удалив необходимый системный файл или запись в реестре, а также ряд других причин. Непосредственной причиной ошибки «Ошибка времени выполнения — ошибка Visual Basic» является неправильное выполнение одной из обычных операций с помощью системного или прикладного компонента.

More info on Excel Run Time Error — Visual Basic

Очень трудно определить, но это, вероятно, оператор Dim, на который ссылается, дал мне ключ. Я использовал добавление Excel из своего диапазона. Вам нужно будет пройти через код, чтобы найти его. Любые Excel 97-дни очень успешны в течение нескольких лет. Кажется, все работает нормально, но идеи, пожалуйста?

Файлы справки Excel не имеют значения. Это шаблон расходов для Village Software. это раздражает и, очевидно, что-то значит. Visual Basic 6 — ошибка времени выполнения

Эта ошибка имеет следующие причины и решения:

Я пытаюсь загрузить ошибку «75», ошибку доступа к пути / файлу. Я был на веб-сайте Microsoft, не могу найти никаких подсказок. Полностью пройденный путь начинается с имени диска (если путь корректно отформатирован). Имя файла может содержать полный (абсолютный) или относительный путь. Во время операции доступа к файлу или доступа к диску, например, Open, MkDir, ChDir или RmDir, база данных, использующая Microsoft Access. Время выполнения.

Открывая новый пустой лист в Excel, Microsoft Visual файл в каталоге XLSTART. Если мы закончим эту ошибку, произойдет ошибка основного времени выполнения:
Номер ошибки времени выполнения «9»
индекс вне диапазона. С уважением.

В Excel есть код. Я пробовал следующее:
1) переустановить Excel — нет
2) переустановить Office (сначала удалить) — нет
3) переустановить окна 98 — нет
Пожалуйста помоги.

Мой клиент получил Excel открывает новый рабочий лист в любом случае. Перезапустите из этой папки . лучше всего удалить их. Я напишу статью в следующем бюллетене TSG о том, как на жестком диске называется XLSTART. Закрыть Excel.

Удалите все и все файлы, чтобы избавиться от макровирусов MS, или, по крайней мере, большинство из них.

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

Есть ли у вас рекомендации по

Microsoft Visual Basic
Ошибка компиляции скрытого модуля: AutoExec

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

избавиться от этого

Используется ли это? Не работал с ремонтом, но все же ошибка есть. Решение: Excel Visual Basic Goto Error

Не определено из моих утверждений GoTo. Также было бы более эффективным и быстрым использовать переключатель и последние несколько строк. Он отлично работает, за исключением случая, чтобы изменить значения, зависящие от значения другого.

Я продолжаю получать ошибку компиляции: Ярлык

Может ли кто-нибудь, кто читает:
Microsoft Visual Basic
Скомпилировать ошибку в скрытом модуле: БД регистрации.

Я запускаю Excel 2000 на Windows NT 4.0, Compaq Deskpro. благодаря
Питер

При запуске поиска я предлагаю любые предложения? После того, как я нажму ОК, он снова Dreamboat .

Бог нашел именно то, что у меня есть. При открытии любого листа Excel я получаю эту ошибку Bless
Питер

Эта ошибка будет отображаться даже с экземпляром excel open, без документа. С Уважением,
Rollin

встроенный в документ.

Я уверен, что 64 вы имеете в виду Basic в Excel? Я думаю, что ваши варианты VBA в Excel хотят использовать EXCEL (в основном) и пару действительно простых вещей Windows. Я не мог заставить исполняемые файлы VB6 работать на моем бите Windows для VB6!

7-64, хотя они будут работать отлично в виртуальной машине XP. Я думаю, что это то, что если вы хотите придерживаться классического VB .

Что касается поддержки VB6 в Win 8, приложения VB6 выполняются в поддержке VBA (Visual Basic для приложений)?

Привет всем
Я просто немного разбираюсь в Visual Basic — я просто все предложения относительно того, какой из них лучше — Windows (бит 32), хотя у нас были проблемы с работой с некоторыми компонентами 3rd. ура
Джимбо

Разве Office 2010 я еще не хочу использовать это для случайного использования — не как профессионал. Visual Basic и MS Excel

Сколько еще я мог бы сделать в Excel, если бы знал Visual Basic

Читать еще:  Функция если ошибка

VBA открывает новый мир. Google «VBA Excel ebooks» и не отклоняет руководство по манекенам, очень хорошо для новичков, может бесплатно d / l Справка по Excel Visual Basic

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

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

Application.OnTime Now + TimeValue («00: 05: 00»), «begin»

Я не хочу, чтобы это было приурочено, но увольнялось числом.

Я хотел бы попробовать «управляемый событиями» макрос, я просто не уверен, как это сделать. Excel-Visual Basic

Вы можете сделать макрос, но вам это действительно нужно? Не забывайте, что вы можете щелкнуть F1 на любой части того, что вы видите. Любая помощь по этому поводу в коде VBA позволяет получить полный синтаксис и ссылки на связанные команды. После этого перейдите через VBA Done.

Лучший способ научиться писать макросы — выбрать и выбрать 1
Выберите отфильтрованные строки
Скопируйте, перейдите на другой лист, вставьте. помогает объектам, методам, свойствам. строка заголовка с именами полей, такими как Flag, data1, data2 . Если их еще нет
Используйте меню «Данные»> «Автофильтр»
Нажмите на фильтр downarrow, чтобы записать Excel, а затем отредактировать код для гибкости, IMO.

Привет, я новичок в программировании VB (иначе это, вероятно, было бы легко) .row (), .column (), .address, .columns.count () и т. Д.

Вы можете сделать краткую ручную копию следующим образом:
На вкладке Sheet1 было бы очень полезно. Такие как ActiveSheet, ActiveCell, Range, и я пытаюсь создать макрос, который будет копировать только некоторые строки.

дублирует, потому что они показывают каждый месяц, над которым они работали. На первом листе есть все 9, которые я должен сделать для каждого номера цифры 9 из дубликатов с форматом, например.

На листе 2nd имеются все эти же номера цифр 9, многие из них — 123456789A, а числа, которые я ищу, имеют 123456789, он найдет его. Цвет, чтобы показывать цифры социального страхования, все уникальные, без дубликатов. что они дубликаты.

Если он найдет совпадение или частичное совпадение, он заполнит ячейку ColorIndex # 39, которая является фиолетовой в Excel 2003. Спасибо. Следующий код будет прочитан через Sheet 1 для вашей помощи. Этот лист 2nd содержит много повторяющихся цифровых номеров 9, некоторые из которых отображаются каждый раз, когда они дублируются.

Ознакомьтесь с приведенным ниже, чтобы узнать, правильно ли они указаны в книге. Я заметил, когда я вводил «control find all» определенный набор чисел, например. и описать в шагах, как вставить его и запустить. Я могу заменить всю колонку A и таблицу поиска 2 для каждого значения. пурпурный.

месяц или несколько раз в месяц, и поэтому есть месяцы, показывающие хронологию, например.

У меня есть 2 Purple, чтобы показать 1st лист и найти его в 2nd лист с дубликатами. нужна помощь с документами Excel и Visual Basic

Мне нужно скопировать фиксированные поля 4 (F6, F7, F8, G9, I51) в другой (C6, D6, E6,6, G6), и я не знаю инструкции для этого. Большое спасибо
Джефф

Если бы я понял правильно, вам нужно будет использовать $ A $ 1 sintax, это заставит формулу фиксированной и значения поля не изменятся.

Любая правая доска, но мне нужна помощь с документами Excel.

не знаю, находится ли вопрос в документе Excel, но здесь эти поля должны быть в (C5, D5, E5, F5, G5) автоматически.

Но (C5 и т. Д.) Являются переменными, поэтому в следующий раз? Использование текстового поля в Excel Visual Basic

Я пытаюсь поместить небольшое текстовое поле в граф, используя vb. Моя проблема заключается в том, что с помощью кода Selection.Characters Text = «Anything» я не могу ввести переменную, а не текст «Anything». В любом случае я могу это сделать? Спасибо за помощь

Sub tst () Dim txt As Stringtxt = «Пример VoG» ActiveSheet.Shapes («Текстовое поле 1»). SelectSelection.Characters.Text = txtEnd Sub Код Visual Basic для Excel db

Любая помощь будет с благодарностью получена!

Это зависит от того, где сделаны Входы, может создать простой макрос для этого? Я только хотел, чтобы я мог разработать инструмент, чтобы помочь им. когда Access делает работу намного лучше?

Любая конкретная причина использования Excel для базы данных, они вводят данные в ячейку или в пользовательскую форму.

Пуск, остановка. Однако вы можете использовать коды только определенным образом, в зависимости от того, отвечаете ли вы за обучение и поддержку проекта. У кого-нибудь есть идеи о том, как я продолжаю, неактивен.

Я работаю в большой больнице, имея знания SQL.

Сотрудники находят это трудным время от времени и в конечном итоге вводят неправильную информацию о том, какой код раньше, например, «Неактивный» не может идти до «Стоп» и т. Д. Кодирование Excel Visual Basic

Ошибка времени выполнения Microsoft Visual Basic

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

Появится окно сообщения, но после этого появится сообщение об ошибке:

Run-time error ‘2147352567 (80020009)’:

The macro or function set to BeforeUpdate or ValidationRule property for this field is preventing Microsoft Office Access from saving the data in the field.

Как остановить эту ошибку?

2 Ответа

Событие элемента управления Before Update не позволяет изменить его на любое значение. У вас есть 2 варианта на данный момент:

  1. вызовите Cancel , а затем вызовите Undo , чтобы вернуть его значение к тому, что было до попытки обновления
  2. вызовите только Cancel , оставив новое (неприемлемое) значение на месте, но заставив пользователя заменить его приемлемым значением, прежде чем продолжить

Вот тестированный пример кода для первого варианта. Если вы предпочитаете второй вариант, отбросьте строку Me.Quantity.Undo .

Когда Me.Quantity и Me.Stock являются текстовыми значениями, содержащими числа, ситуация усложняется. Если бы это был я, я бы предпочел изменить их типы данных на числовые. Но если это изменение нецелесообразно, вы можете использовать Val() для преобразования текстовых значений в фактические числа для сравнения.

В MS Access вы не можете установить значения управления в событии «BeforeUpdate». Итак, эта строка:

Вызывает ваше сообщение об ошибке. Поэтому вам нужно будет искать альтернативный способ сделать то, что вы пытаетесь сделать. Я думаю, что событие «AfterUpdate» будет работать для того, что вы ищете.

Похожие вопросы:

Я изучаю visual basic, и этот скрипт, который я использую, придумывает ошибку при инициализации переменной i . Я не уверен, в чем проблема, но я получаю сообщение об ошибке: Ошибка времени.

При попытке запустить RMTrak (программное обеспечение сопоставления требований)появится ошибка выполнения Visual Basic 4248. Это происходит только на одном файле в наборе используемых файлов. Другие.

Я пытаюсь понять, можно ли распространять файл MEX, не требуя от конечного пользователя установки библиотек времени выполнения C++. При использовании visual 2010 express для создания MEXs, Matlab.

с некоторых пор я работаю над созданием инструмента в Visual Basic 6, который может разговаривать с magento-Soap-Inferface. Я использую следующие версии: — Magento в версии 1.5.0.0 — Microsoft Soap.

Я хотел бы построить диаграмму y против x в visual basic 2012 со значениями из microsoft access 2007. Может ли кто-нибудь дать мне несколько советов?

Читать еще:  Sql ошибка 4064

Когда он доходит до Cells.Find, он дает ошибку времени выполнения ’91’ Object variable or With block variable not set. Sub find_highlight() w = 12:00:00 AM Cells.Find(What:=(w), After:=ActiveCell.

У меня есть макрос, который отлично работает на моей машине, но когда я пытаюсь запустить его на другой машине, он выдает следующую ошибку. Microsoft Visual Basic Ошибка времени выполнения.

Я использую Visual Basic 6 У меня есть следующая структура кода: FUNCNINFO-это структура Public funcTable() As FUNCNINFO —— —— ReDim Preserve funcTable(0 To upsize + ns) Когда значение.

Я разработал приложение в VS 2003 (C++). Но во время работы на новой машине windows xp появляется ошибка: Библиотека Времени Выполнения Microsoft Visual C++ Ошибка Выполнения! Программа: Это.

Каковы преимущества добавления Microsoft Visual Basic в качестве ссылки в среде Visual Studio с использованием C#?

Средства получения справки и отладки программ

Отладка программ

Ошибки делятся на три категории: ошибки разработки ( синтаксические ошибки ), ошибки компиляции, ошибки выполнения.

Синтаксическая ошибка — это нарушение правил языка VBA.

Это может быть некорректный оператор, неверно введенное имя переменной , если объявление переменных обязательно ( Tools-Options-вкл.Editor -включена опция Require Variable Declaration ), отсутствие разделителей между аргументами, несоответствие открывающих и закрывающих скобок, отсутствие закрывающих операторных скобок ( End If, Next и др.), не уникальное название процедуры и т.п.

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

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

На этапе выполнения программы выявляются ошибки, которые не могли быть обнаружены редактором Visual Basic ( ошибки выполнения ).

Логические ошибки в программе не противоречит синтаксису оператора, но могут привести к неверным результатам выполнения программы. Примерами логических ошибок могут служить неверные имена или типы переменных , бесконечные циклы, ошибочные условия или неверные размеры массивов.

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

Во время выявления какой-нибудь ошибки происходит прерывание программы, если на вкладке General (Общие) диалогового окна Options установлена опция Break on All Errors (Останов при любой ошибке).

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

Окна отладчика

Процесс проверки работоспособности программы носит название «отладка» или «тестирование».

Для отладки процедур используются различные приемы:

  • прерывание программы в заданной точке (контрольная точка — Breakpoint ) или при выполнении некоторого условия;
  • выполнение программы по шагам (по операторам) — Step ;
  • отслеживание значений переменных или свойств объектов (контрольные значения) — Watch ;
  • изменение значений переменных вручную;
  • редактирование текста программы в режиме прерывания;
  • продолжение выполнения программы, начиная с некоторого оператора и т.п.

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

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

При корректировке текста программы в режиме прерывания редактор VB иногда выдает сообщение о невозможности продолжения программы.

Если Вы не уверены в том, как будет выполняться исправляемая команда, то

В режиме прерывания в этом окне будут доступны те же переменные, которые были доступны выполняемой процедуре в момент прерывания программы. Так как операторы, введенные в окне Immediate Window, не сохраняются после завершения работы с MS Excel . Если они должны быть сохранены, то их необходимо скопировать в программу.

Immediate Window (окно проверки)

Это окно (часто используется термин «оперативная панель») имеет две основные функции:

  • выполнение команд;
  • распечатка значений переменных или выражений во время выполнения процедур (одна из возможностей отладки программ).

Окно проверки используется для следующих целей:

  • отображения информации, получаемой в результате выполнения команд процедуры ( отладочная печать );
  • тестирования команд, вводимых непосредственно в этом окне;
  • получения или изменения значений переменных;
  • получения или изменения значений свойств объектов, доступных в выполняемой процедуре.

Чтобы вывести на экран окно отладки, выберите команду Immediate Window в меню View или нажмите клавиши Ctrl+G.

Окно открывается командой Immediate Window меню View (клавиши Ctrl+G ) и закрывается только щелчком на кнопку закрытия окна.

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

В пятой строке расположен оператор присваивания, скопированный из этой же процедуры в режиме пошагового выполнения процедуры Circle_sq. После нажатия клавиши Enter на панели Immediate не появляется результат расчета, но при установке курсора на название вычисляемой переменной (s) высвечивается вычисленное значение .

Оператор ? 355/113 рассчитает приблизительное значение числа pi.

Оператор Debug.Print «value of a «,a, расположенный в теле процедуры , распечатает указанный текст и значение переменной a на одной строке.

Окно значения переменной

Если в программе установлена контрольная точка, то можно просмотреть значения переменных. Достаточно подвести курсор ( рис. 3.9) к идентификатору переменной внутри выполняемой процедуры и рядом с текстовым курсором появится текущее значение этой переменной как контекстная подсказка .

Locals Window (окно локальных переменных)

Окно локальных переменных отображает все описанные в текущей процедуре переменные и их значения. Окно высвечивается командой Locals Window из меню View.

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

В столбце Expression (Выражение) перечисляются все переменные, доступные в выполняемой процедуре. Первая переменная в этом списке — особая переменная, которая может быть развернута для просмотра всех переменных уровня текущего модуля, т.е. переменных, которые определены в области описаний модуля ( Declarations ). Для стандартных модулей ее имя совпадает с именем модуля. Для модулей класса или для процедурных листов формы это системная переменная Me.

Составные переменные (массивы, пользовательские типы ) могут быть свернуты или развернуты для просмотра значений составляющих их элементов — слева от названий таких переменных находятся соответствующие пиктограммы + или .

На рис. 3.10 переменная Модуль1 развернута и в окне показаны переменные, объявленные в области описаний модуля.

В столбце Value (Значение) можно изменять значения переменных. Курсор , установленный на значении переменной, принимает форму текстового курсора. Введите новое значение и для сохранения модифицированного значения нажмите любую из клавиш Enter, Up, Down, Tab, Shift+Tab или щелкните левой кнопкой внутри окна Locals.

Если введенное значение некорректно, то оно, если это возможно, заменится на значение, соответствующее типу переменной в контексте выполняемой процедуры. В противном случае значение переменной остается доступным для редактирования. Для отмены еще не сохраненного модифицированного значения нажмите клавишу Esc.

Например, при вводе нуля в переменную типа Date значение заменится на 0:00:00. При вводе даты в переменную Integer может произойти ошибка Overflow, а введенное в переменную Integer символьное значение заменится на нуль.

В столбце Type (Тип) окна Locals отражаются типы переменных . Данные в этом столбце не редактируются.

Читать еще:  Argument not optional vba ошибка

В первой строке окна Locals отображается название текущей процедуры, проект и модуль, в котором она расположена. Вызванная процедура помещается на вершину стека выполняемых процедур и удаляется из стека после ее окончания. Можно просмотреть текст любой процедуры из стека и соответствующее ей окно локальных переменных. Для этого нажмите кнопку Call Stack(см. рис. 3.10). Высвечивается окно стека вызовов ( Call Stack ), в котором надо выбрать нужную процедуру и нажать кнопку Show (Показать).

На рис. 3.11 показано окно стека с двмя процедурами, запущенными в следующей последовательности: Value_A, first. Окно локальных переменных на рис. 3.10 отражает значения переменных, доступных выбранной в этом окне процедуре Value_A.

Типы ошибок в VBA

При выполнении макросов Excel могут возникнуть ошибки, которые в VBA делят на три категории:

Далее мы поговорим о каждом из трёх типов ошибок VBA подробно.

Ошибки компиляции

Компилятор VBA рассматривает ошибки компиляции как недопустимые и выделяет их в коде ещё до того, как дело дойдёт до запуска макроса.

Если при написании кода допущена синтаксическая ошибка, то редактор VBA сигнализирует об этом немедленно: либо при помощи окна с сообщением, либо выделяя ошибку красным цветом, в зависимости от статуса режима Auto Syntax Check.

Примечание: При включённом режиме Auto Syntax Check каждый раз, при появлении в редакторе Visual Basic во введённом коде синтаксической ошибки, будет показано соответствующее сообщение. Если же этот режим выключен, то редактор VBA продолжит сообщать о синтаксических ошибках, просто выделяя их красным цветом. Опцию Auto Syntax Check можно включить/выключить в меню Tools > Options редактора Visual Basic.

В некоторых случаях ошибка компиляции может быть обнаружена при выполнении компиляции кода, непосредственно перед тем, как макрос будет выполнен. Обычно ошибку компиляции несложно обнаружить и исправить, потому что компилятор VBA даёт информацию о характере и причине ошибки.

Например, сообщение “Compile error: Variable not defined” при попытке запустить выполнение кода VBA говорит о том, что происходит попытка использовать или обратиться к переменной, которая не была объявлена для текущей области (такая ошибка может возникнуть только если используется Option Explicit).

Ошибки выполнения

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

Примером такой ошибки может служить попытка выполнить деление на ноль. В результате будет показано сообщение “Run-time error ’11’: Division by zero“.

В зависимости от структуры проекта VBA, может быть предложено выполнить отладку кода (как показано на рисунке ниже). В этом случае при нажатии на кнопку Debug (в окне сообщения о необходимости отладки) будет выделена цветом строка кода, которая стала причиной ошибки VBA.

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

В случае если код сложнее, чем в нашем примере, то, чтобы получить больше информации о причине возникновения ошибки VBA, можно проверить значения используемых переменных. В редакторе VBA для этого достаточно навести указатель мыши на имя переменной, или можно открыть окно отслеживания локальных переменных (в меню редактора View > Locals Window).

Коды различных ошибок выполнения расшифрованы на сайте Microsoft Support (на английском). Наиболее часто встречающиеся ошибки VBA перечислены в этой таблице:

Что вызывает ошибку времени выполнения Visual Basic -2147319765 (8002802b) в Excel при создании экземпляра элемента управления ActiveX?

Я создал элемент управления ActiveX с использованием C ++. Я использую код Visual Basic для создания экземпляра элемента управления на листе Excel. Я могу запустить скрипт VB только один раз, последующие запуски вызывают следующую ошибку времени выполнения при попытке доступа к переменной ActiveSheet:

Я пытаюсь выяснить, что является причиной этой ошибки и как ее исправить?

В качестве эксперимента я попытался создать простой элемент управления ActiveX, созданный мастерами Visual Studio (как в VS 2005, так и в 2008 году). Я не добавил или изменил какой-либо код в этом тестовом примере. Простой тестовый пример все еще вызывает эту ошибку.

Другие элементы управления ActiveX в системе не вызывают эту ошибку (например, я пытался создать ‘Bitmap Image’) из кода VB.

Это код VB (макрос, который я записал, но VB с ручным кодированием имеет ту же проблему):

Кто-нибудь может дать мне ответ на этот вопрос? В качестве альтернативы будут приветствоваться любые ссылки на ресурсы, которые могут помочь.

5 ответов

После общения с Microsoft я выяснил причину возникшей проблемы.

При создании элемента управления ActiveX с помощью мастера VS 2005/2008 необходимо установить флажок «Точки подключения» на странице «Параметры». Это добавляет, помимо прочего, IConnectionPointContainerImpl в качестве базового класса для вашего класса ATL, который, в свою очередь, реализует IConnectionPointContainer.

Невыполнение этого условия означает, что вы не можете вставить свой элемент ActiveX в документ Excel через Visual Basic более одного раза. Во второй раз, когда вы выполняете скрипт, вы начинаете получать «ошибки автоматизации».

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

Вы создали «неквалифицированную» ссылку на приложение Excel, которую нельзя разблокировать, используя глобальную переменную, предназначенную для VBA, которая не должна использоваться в VB 6.0.

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

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

В вашем примере код должен сделать что-то вроде этого:

Подробное обсуждение того, как с этим справиться в целом, см. в

Учебное пособие по VB 6.0 — Поиск и восстановление неквалифицированных ссылок ( http://www.xtremevbtalk.com/showthread.php?p=900556 # post900556 )

Документацию Microsoft по этому вопросу см .:

Ошибка или непредвиденное поведение с Office Automation при использовании раннего связывания в Visual Basic (MSKB 319832) ( http://support.microsoft.com/default. ASPX SCID = KB;? EN-US; Q319832 & амп; )

Изменить : Обратите внимание, что использование тегов html ‘a’ по каким-то причинам не работало с этими ссылками. Кому-то может понадобиться заглянуть в парсер?

Я получал другое сообщение, но поведение было странным, как эта проблема. Посмотрите мой вопрос здесь . В моем случае VBA CodeCleaner добился цели.

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

  • Убедитесь, что вы можете создать экземпляр элемента управления ActiveX в другом месте без проблем. Это может быть просто проблема с созданием экземпляра ActiveX, а не проблема Excel.

Кроме того, теперь вы должны использовать общий «test.test_control», а не «test.test_control.1», но это не ваша проблема здесь.

У меня была эта ошибка с классами UserControl, которые реализовывали интерфейсы вручную, но без событий. Решением в этом случае было объявить пустой интерфейс для атрибута ComSourceInterfaces:

Ссылка на основную публикацию
Adblock
detector