Как обойти Run-Time Error 1004 (VBA ECXEL)?

Программирование на Visual Basic for Applications
Antov
Обычный пользователь
Обычный пользователь
 
Сообщения: 54
Зарегистрирован: 21.01.2007 (Вс) 6:24

Как обойти Run-Time Error 1004 (VBA ECXEL)?

Сообщение Antov » 21.01.2007 (Вс) 6:33

Есть некая формула, генерируемая динамически VBA кодом типа
((10+3)-8/9)*0,25
или
5/2*3
или
5*ыв56+8
и т.д
Нужно определить рабочая ли она, как в первых 2х случаях и обсчитать её, либо отказать в обсчёте.
Обсчёт производится путём
Application.ExecuteExcel4Macro (myformula)
В случае если формула содержит левые сиволы вылетает ошибка (см топ), никак не могу её обойти... :(
Как её перехватить?
Спасибо
Всё что не убивает нас - делает нас сильнее.
(С) Ницше

bi-lya
Обычный пользователь
Обычный пользователь
 
Сообщения: 87
Зарегистрирован: 07.08.2006 (Пн) 15:36

Сообщение bi-lya » 21.01.2007 (Вс) 7:17

Я так думаю, создать обработчик ошибок (самое простое:
Код: Выделить всё
On Error GoTo MyError
...
MyError
If Err.Numder=1004 Then...

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

Antov
Обычный пользователь
Обычный пользователь
 
Сообщения: 54
Зарегистрирован: 21.01.2007 (Вс) 6:24

Сообщение Antov » 21.01.2007 (Вс) 7:20

bi-lya писал(а):Я так думаю, создать обработчик ошибок (самое простое:
Код: Выделить всё
On Error GoTo MyError
...
MyError
If Err.Numder=1004 Then...

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


К сожалению ни эта конструкция, ни
if isError (...)
не работают :(
Ошибка так и выскакивает... а обработчик просто её не замечает.. ни перед ошибкой.. ни после неё, хотя в переменно Err появляются все значения....
Может я чего не так делаю...
Всё что не убивает нас - делает нас сильнее.
(С) Ницше

Antov
Обычный пользователь
Обычный пользователь
 
Сообщения: 54
Зарегистрирован: 21.01.2007 (Вс) 6:24

Сообщение Antov » 21.01.2007 (Вс) 7:31

Причём если в настройках Tools / Options / General поставить Break on Unhandleв Errors, то обработчик начинает срабатывать и перехватывает ошибку.
Просто данный скрипт быдет выполняться на абсолютно разных компах, боюсь как бы там она не начала вылазить.
Всё что не убивает нас - делает нас сильнее.
(С) Ницше

Template
Обычный пользователь
Обычный пользователь
 
Сообщения: 73
Зарегистрирован: 09.09.2006 (Сб) 18:03

Сообщение Template » 21.01.2007 (Вс) 8:03

Код: Выделить всё
myformula = "((10+3)-8/9)*0.25"

If IsError(Evaluate(myformula)) Then MsgBox "Err"

Antov
Обычный пользователь
Обычный пользователь
 
Сообщения: 54
Зарегистрирован: 21.01.2007 (Вс) 6:24

Сообщение Antov » 21.01.2007 (Вс) 8:09

Template писал(а):
Код: Выделить всё
myformula = "((10+3)-8/9)*0.25"

If IsError(Evaluate(myformula)) Then MsgBox "Err"


УВАЖАЕМЫЙ!!!
Нижчайший Вам поклон, спасибо!!!
уже 18 часов сижу с этой бедой :) Помог.
Единчтвенное, если не трудно, можно ъоть сылочку что это за штука такая Evaluate, а то при беглом поиске в Ya ничего не нашёл.
Ещё раз спасибо!!!!!

++++
Простите, криво запрос написал, нашёл :)
Ещё раз спс!
Всё что не убивает нас - делает нас сильнее.
(С) Ницше


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 123

    TopList