Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2009, 22:41   #1
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию Интерпретация значение стрококовой переменной как команду.

Всем привет!!! И доброй ночи!
Давно меня здесь не было....

Существует ли в VBA команды интерпретации?

Например я могу в программе написать так: x1=23
Но могу ли я присвоить строковой переменной это же значение (например: stroka="x1=23") и интерпретировать эту переменную как команду?
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 28.10.2009, 23:16   #2
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Что означает интерпретировать как команду? Для чего это нужно?
motorway вне форума Ответить с цитированием
Старый 28.10.2009, 23:44   #3
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от motorway Посмотреть сообщение
Что означает интерпретировать как команду? Для чего это нужно?
Команда интерпретирования выполняет код записанный в текстовую переменную так как будто она она введена пользователем в обычном режиме. Это позволяет генерировать код программы в самой программе, то есть грубо это можно предстать как "программа пишет сама себя".

Данный механизм очень хорошо развит в языке rexx, и в сочетании с его "уникальной" структурой дает очень широкие возможности для программиста. Мы с другом разработали ряд методик по весьма эффективному использованию подобной возможности.
Работаю над очередным макросом я прикинул что наличие такой команды позволит раз в 5 уменьшить размер листинга.
Впервые я столкнулся с командами интерпретации еще на спектруме, изучая его бейсик. Но в хелпе VBA найти ни чего не смог.
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 29.10.2009, 00:49   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
(например: stroka="x1=23") и интерпретировать эту переменную как команду?
видимо вопрос звучит так могу я строку "x1=23" внести в листинг программы, чтобы она выполнялась как стандартный оператор ВБА. В данном случае переменной х1 присвоить значение 23.
модуль ВБА, такой же обьект, как многие другие, у него есть свои свойства и методы.
скопируйте вот это в модуль:
Код:
Sub s1()
  ActiveWorkbook.VBProject.vbcomponents(3).codemodule.insertlines 7, "  x1 = 23" & vbCrLf & "  msgbox x1"
  s2
End Sub

Sub s2()
End Sub
убедитесь, что строка "Sub s2()" является 6-й строкой в модуле и выполните процедуру s1.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 29.10.2009, 18:58   #5
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
видимо вопрос звучит так могу я строку "x1=23" внести в листинг программы, чтобы она выполнялась как стандартный оператор ВБА. В данном случае переменной х1 присвоить значение 23.
Именно так.

Цитата:
Сообщение от IgorGO Посмотреть сообщение
модуль ВБА, такой же обьект, как многие другие, у него есть свои свойства и методы.
скопируйте вот это в модуль:
Код:
Sub s1()
  ActiveWorkbook.VBProject.vbcomponents(3).codemodule.insertlines 7, "  x1 = 23" & vbCrLf & "  msgbox x1"
  s2
End Sub

Sub s2()
End Sub
убедитесь, что строка "Sub s2()" является 6-й строкой в модуле и выполните процедуру s1.
Скопировал. Убедился. Попробовал запустить по "F5". Получил сначала сообщение:
Программный доступ к проекту Visual Basic не является доверенным.
а потом сообщение:
Method 'VBProject' of object '_Workbook' failed
Попытка запуска из из книги по "F8" так же не далась, там вообще при наведении на имя процедуры кнопка "выполнить" перестает быть активной.

В общем идею понял. Можно ли в таком варианте задать не текстовую строку, а переменную - которая содержит нужную текстовую строку?
С уважением, Алексей.

Последний раз редактировалось tae1980; 29.10.2009 в 19:01.
tae1980 вне форума Ответить с цитированием
Старый 30.10.2009, 10:45   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Alt+F11, курсор не территорию S1, F5 или выполнить.
Вложения
Тип файла: rar Книга189.rar (6.0 Кб, 10 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Win32 как вывести на экран значение переменной STill_ace Общие вопросы C/C++ 11 22.08.2009 17:47
Как прочитать значение переменной javascript в TWebBrowser? u961 Работа с сетью в Delphi 2 01.04.2009 23:22
Как передать значение переменной из функции в ACCESSе в функцию в EXCELе? musicitsme Microsoft Office Access 1 01.04.2009 10:24
как получить значение переменной smoke888 PHP 3 20.06.2008 02:11
Как получить значение системной переменной в С++ PersonaGrata Общие вопросы C/C++ 2 29.02.2008 22:14