|
Вопрос по передаче значений переменных из одной подпрограммы в другую ?
|
|||
---|---|---|---|
#18+
Добрый день! Подскажите по вопросу передачи значений переменных из одной подпрограммы в другую. Открываю Excel книгу(думаю почти не важно, что открывать) и присваиваю переменной FN_PRG имя открытой книги оператором FN_PRG = Application.ActiveWorkbook.Name Отладчик показывает, что имя присвоено и все ОК. Далее пытаюсь использовать переменную FN_PRG в другой подпрограмме, но переменная уже видится как пустая строка" " - Empty Пробовал разные варианты - определял переменную в основном модуле или в процедуре открытия... Результат везде отрицательный. Подпрограммы определены как Public и по идее видимость переменной обеспечена... Подскажите в чем может быть дело? Как передавать значения переменных из подпрограммы в другие подпрограммы? Спасибо! Public Sub WorkBook_Open() Dim FN_PRG As String FN_PRG = Application.ActiveWorkbook.Name Debug.Print "ИМЯ КНИГИ при открытии- "; FN_PRG UserForm1.Show End Sub Public Sub ConnectExcel() Debug.Print "FN_PRG в подпрограмме Connect- "; FN_PRG ' Здесь переменная FN_PRG уже пустая строка ' И соответственно использовать ее уже по назначению невозможно End Sub ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 10:27 |
|
Вопрос по передаче значений переменных из одной подпрограммы в другую ?
|
|||
---|---|---|---|
#18+
Yuri KR, Не удивительно. Скажу грубо и понятно. Ты пытаешься работать с параллельными вселенными, где есть индивиды с одинаковыми именами, но разные по своей сути.. Тебе нужно создать com объект для приложения excel, сделать ссылку к этому объекту и работать с объектом как с приложением. наладить вменяемый контакт, через com объект ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 10:37 |
|
Вопрос по передаче значений переменных из одной подпрограммы в другую ?
|
|||
---|---|---|---|
#18+
Yuri KR, FN_PRG - у тебя просто стринг. И если я правильно понял, в новой подпрограмме тебе тоже нужен именно стринг с именем а не сам объект. Для этого перемести строку Dim FN_PRG As String в самый верх модуля формы, сразу за option explicit ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 10:41 |
|
Вопрос по передаче значений переменных из одной подпрограммы в другую ?
|
|||
---|---|---|---|
#18+
yoichi730Yuri KR, Не удивительно. Скажу грубо и понятно. Ты пытаешься работать с параллельными вселенными, где есть индивиды с одинаковыми именами, но разные по своей сути.. Тебе нужно создать com объект для приложения excel, сделать ссылку к этому объекту и работать с объектом как с приложением. наладить вменяемый контакт, через com объект Дык ТС так и сделал будьте внимательны ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 10:43 |
|
Вопрос по передаче значений переменных из одной подпрограммы в другую ?
|
|||
---|---|---|---|
#18+
Yuri KR, код в студию!! Больше кода!! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 10:48 |
|
Вопрос по передаче значений переменных из одной подпрограммы в другую ?
|
|||
---|---|---|---|
#18+
что за переменная FN_PRG. Где ссылка на объект, где эта переменная светиться? Коллеги, ну вы чего? это разные области видимости, и имя переменной служит для простоты обращения к ячейке памяти.. пусть они называются одинаково, ну а ссылки то на самом деле разные ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 10:53 |
|
Вопрос по передаче значений переменных из одной подпрограммы в другую ?
|
|||
---|---|---|---|
#18+
Судя по приведенному коду и по тому, что Sub ConnectExcel() обращение к FN_PRG не вызывает ошибки, у вас, видимо такая переменная объявлена дважды. Один раз в заголовке модуля как Pablic Variant, а второй раз в Sub WorkBook_Open(), где она имеет приоритет и значение присваивается именно ей, а не первой. Если угадал, то просто закомментируйте Dim FN_PRG As String. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 11:10 |
|
Вопрос по передаче значений переменных из одной подпрограммы в другую ?
|
|||
---|---|---|---|
#18+
Yuri KRпеременная уже видится как пустая строка" " - EmptyТипизировать нужно переменные. Строка String не может быть Empty , это привилегия типа Variant ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 11:30 |
|
Вопрос по передаче значений переменных из одной подпрограммы в другую ?
|
|||
---|---|---|---|
#18+
Yuri KR, ну и заголовке каждого модуля обязательно должно быть указано Код: vbnet 1. 2.
Используйте Option Explicit ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 11:39 |
|
Вопрос по передаче значений переменных из одной подпрограммы в другую ?
|
|||
---|---|---|---|
#18+
Кривцов Анатолий, Переменная объявлена один раз .... Пробовал ее объявлять в перечисленных подпрограммах, в одной или другой, но конечно толку никакого .... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 12:39 |
|
Вопрос по передаче значений переменных из одной подпрограммы в другую ?
|
|||
---|---|---|---|
#18+
Панург, да я так и сделал... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 12:41 |
|
Вопрос по передаче значений переменных из одной подпрограммы в другую ?
|
|||
---|---|---|---|
#18+
Yuri KR, сверху там где этот самый open explicit плюхаешь Код: vbnet 1.
можно наслаждаться до следующей "поворота" поскольку переменная становится видимой в пределах именно этого модуля ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 13:39 |
|
Вопрос по передаче значений переменных из одной подпрограммы в другую ?
|
|||
---|---|---|---|
#18+
Не пойму, в чем проблема. Объявлено должно быть так: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Никаких объявлений этой переменной внутри процедур быть не должно. Проверьте, как этот код будет работать. Для верности измените имя FN_PRG на что-нибудь другое - если много объявленийв процедуре, то пропустить объявление локальной переменной довольно просто ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 15:29 |
|
Вопрос по передаче значений переменных из одной подпрограммы в другую ?
|
|||
---|---|---|---|
#18+
Хоспаде, подпрограмма это что ли Sub??.. Вот если бы сказали процедура, я меня было бы меньше путаницы. Хоть про область видимости одноименных переменных я был прав. Согласен с господином MrShin, это рабочий вариант. Хоть и не обязательно все public делать, и с private должно работать (в рамках этого модуля). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 15:47 |
|
Вопрос по передаче значений переменных из одной подпрограммы в другую ?
|
|||
---|---|---|---|
#18+
yoichi730Хоспаде, подпрограмма это что ли Sub?? Подпрограмма (англ. subroutine) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 16:12 |
|
Вопрос по передаче значений переменных из одной подпрограммы в другую ?
|
|||
---|---|---|---|
#18+
Панург, у меня в памяти отложилось что подпрограммами обзывают как процедуры так и функции. В этом случаи следует винить или мою память или преподавателя, который нам начитывал часы в универе. А теперь по делу - без выноса FN_PRG в глобал. Да и смысл в ней пропадет, только читаемость кода повышает).. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2019, 08:00 |
|
Вопрос по передаче значений переменных из одной подпрограммы в другую ?
|
|||
---|---|---|---|
#18+
yoichi730А теперь по делуПо делу - ТС нужно читать справочную литературу, а не пытаться изучать язык по форуму. Область видимости переменных в Visual Basic для приложений У меня такое осчучение, что у многих поиск не работает и Google забанили. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2019, 08:09 |
|
Вопрос по передаче значений переменных из одной подпрограммы в другую ?
|
|||
---|---|---|---|
#18+
Добрый день, спасибо всем за помощь! В итоге разобрался. Согласен, что надо было чуть больше кода написать, но не хотел загружать никого, интересовал сам принцип. И надо было более акцентировано написать, что код Public Sub WorkBook_Open() исполняется при открытии Excel книги. И я хотел сразу при открытии книги исполнялся код и зафиксировалось имя книги в переменной FN_RPG и дальше использовать ее значение в Public Sub ConnectExcel(). Но значение в Public Sub ConnectExcel() не попадало. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2019, 09:44 |
|
Вопрос по передаче значений переменных из одной подпрограммы в другую ?
|
|||
---|---|---|---|
#18+
Yuri KRкод Public Sub WorkBook_Open() исполняется при открытии Excel книги.это и ежу понятно. он больше нигде не выполнится правильно Yuri KRИ я хотел сразу при открытии книги исполнялся код и зафиксировалось имя книги в переменной FN_RPG и дальше использовать ее значение в Public Sub ConnectExcel().ответили уже как 21839093 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2019, 10:29 |
|
Вопрос по передаче значений переменных из одной подпрограммы в другую ?
|
|||
---|---|---|---|
#18+
поправлю ссылку Панургответили уже как 21838621 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2019, 10:31 |
|
|
start [/forum/topic.php?fid=45&msg=39788848&tid=1610796]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
63ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 327ms |
total: | 500ms |
0 / 0 |