Xpoint
   [напомнить пароль]

EVAL в VBA

Метки: [без меток]
2005-06-06 11:33:56 [обр] Top manager(0/2)[досье]
Народы! Подскажите пожалуйста алгоритм работы с EVAL. У мя задача такова, что нуно брать некоторый код из ячейки EXCEL и выполнять его.
спустя 19 минут [обр] Сергей Круглов(19/2057)[досье]
eval('msgbox("oops")') работает?
спустя 3 минуты [обр] Top manager(0/2)[досье]
В ACCESS, команда EVAL работает, также как и в JS (и др. яз.), но млин, она как-то иначе работает в EXCEL. Как?
ЗЫ. "eval('msgbox("oops")') работает?" - не работает в EXCEL :(
спустя 34 минуты [обр] Сергей Круглов(19/2057)[досье]

Говорит
Compilation error:
Sub or Function not defined

Может, и нету евала в экселе?

спустя 24 минуты [обр] Top manager(0/2)[досье]
Насколько я помню, есть что-то вроде application.eval("..."), но туда подставляешь что либо, хотябы тотже msgbox, он просто молчя отрабатывает и всё. Млин, ваще не понимаю.
спустя 58 минут [обр] Андрей Брайнин(3/127)[досье]
в VB для Excel eval нет.
может есть смысл перепроектировать задачу так, чтобы eval вообще был не нужен?
по своему опыту могу сказать, что для решения большинства задач (и уж тем более задач для Excel) eval не нужен.
или вы пишите свой скриптовой язык для Excel? можете вкратце описать задачу?
спустя 11 минут [обр] Top manager(0/2)[досье]

Задача:
Есть формула C1=A1+B1, если записать в ячейку C1 "=A1+B1" - работать будет.
Но, заметим, что тут известны номера строк. А как быть если номера строк не известны и нужно что бы формула динамически формировалась. К примеру, в Excel есть такая функция для построения "протой" формулы - "INDIRECT", её примерный синтаксис C1=INDIRECT("A1"), т.е. это эквивалент простой формулы "=A1", теперь если усложнить C1=INDIRECT("A1+B1") - не работает. Мне нужно, что бы работала к примеру такая фишка:
====================================================================================
C1=INDIRECT("A" & TEXT(ROW();"@") & "+B" & TEXT(ROW();"@"))

  • Вместо INDIRECT, какая либо функция, из "природы" команды EVAL

====================================================================================

спустя 33 минуты [обр] Lynn «Кофеман»(0/571)[досье]
Top manager[досье]
Попробуйте посмотреть справку к Excel'ю по слову R1C1, может это то, что вам надо.
спустя 4 минуты [обр] Top manager(0/2)[досье]
:) Ни чего особенного нет
спустя 5 часов [обр] Владимир Палант(27/4445)[досье]
Как насчет =INDIRECT("A1") + INDIRECT("B1")?
спустя 2 часа 38 минут [обр] VIG(38/839)[досье]

А что-то наподобие не поможет отцу русской демократии ?

Worksheets("Sheet1").Range("A1").Formula = "=$A$4+$A$10"

(скопипастено из MS VB Help)

спустя 8 часов [обр] Top manager(0/2)[досье]

Владимир Палант, ну где же Вы раньше были?!
Как насчет =INDIRECT("A1") + INDIRECT("B1")?
А Я млин чё-то не додумался, а ведь действительно, всё просто как всё великое... :)

Спасибо всем, тема закрыта

спустя 3 часа 33 минуты [обр] Андрей Брайнин(3/127)[досье]
Top manager[досье] c относительным позиционированием (на что собственно и намекал Lynn) =R[1]C[1] + R[-1]C[-1] тоже есть сымсл познакомиться...
Powered by POEM™ Engine Copyright © 2002-2005