Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Office Новый топик    Ответить
 Вопрос по передаче значений переменных между Sub-подпрограммами ?  [new]
Yuri KR
Member

Откуда:
Сообщений: 145
Добрый день!
Подскажите по вопросу передачи значений переменных из одной подпрограммы в другую.

Открываю 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
End Sub
Модератор: Учимся использовать тэги оформления кода - FAQ
20 мар 19, 10:10    [21838099]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по передаче значений переменных между Sub-подпрограммами ?  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20468
Изучаем темы учебника
1) области видимости переменных (локальная переменная одной процедуры в другой не видна)
2) параметры процедур (нужно просто передать значение переменной FN_PRG в процедуру ConnectExcel через параметры)
3) https://www.sql.ru/faq/faq_topic.aspx?fid=2539
20 мар 19, 10:31    [21838129]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по передаче значений переменных между Sub-подпрограммами ?  [new]
Yuri KR
Member

Откуда:
Сообщений: 145
Shocker.Pro,

1) области видимости переменных (локальная переменная одной процедуры в другой не видна)
А почему они локальные, если подпрограммы объявлены вроде как Public и видимость по идее должна быть...

2) параметры процедур (нужно просто передать значение переменной FN_PRG в процедуру ConnectExcel через параметры)
с этим полностью согласен...
получается, что FN_PRG в двух подпрограммах просто разные FN_PRG, хоть и имя совпадает, так?

Ну и для контроля включил - Option Explicit
20 мар 19, 12:47    [21838358]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по передаче значений переменных между Sub-подпрограммами ?  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20468
Yuri KR
А почему они локальные, если подпрограммы объявлены вроде как Public
Подпрограммы Public, переменные - нет
Yuri KR
видимость по идее должна быть...
зачем выдумывать какие-то идеи, если есть спецификация, синтаксис языка и т.п.?
Yuri KR
в двух подпрограммах просто разные FN_PRG, хоть и имя совпадает, так?
да, и именно это покажет Option Explicit
20 мар 19, 12:58    [21838382]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по передаче значений переменных между Sub-подпрограммами ?  [new]
The_Prist
Member

Откуда: www.excel-vba.ru
Сообщений: 1832
Yuri KR
Как передавать значения переменных из модуля в модуль?
Здесь с примерами кодов расписывал как надо объявлять переменные: Что такое переменная и как правильно её объявить?
23 мар 19, 15:34    [21841699]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Office Ответить