Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Как передать переменную с одного кода в другой?


Автор: Izuver 25.9.2006, 23:13
К примеру:
Sub qw()
wq
y=x*10
End sub

Sub wq()
x=13
End sub

Как в qw задать x=13

Автор: Genyaa 25.9.2006, 23:41
Если я правильно понял вопрос... 
Код

Sub qw()
wq(x)
y=x*10
End sub

Sub wq(x)
x=13
End sub


А лучше объявить переменную явно:

Код

Sub qw()
Dim x as Integer
wq(x)
y=x*10
End sub

Sub wq(x as Integer)
x=13
End sub

Автор: Akina 26.9.2006, 07:21
или сделать переменную глобальной - уровня модуля или уровня приложения.

Код

Dim x as Integer

Sub qw()
wq()
y=x*10
End sub

Sub wq()
x=13
End sub

Автор: Izuver 26.9.2006, 21:40
Хорошо все это для это примера, но если коды не одном модуле, а один в Module1\Sub qw(), а второй в UserForm1\Private Sub CommandButton1_Click()  и сам x это адресс, к примеру "C:\Program Files"?

Автор: Akina 27.9.2006, 12:24
Цитата(Izuver @  26.9.2006,  22:40 Найти цитируемый пост)
если коды не одном модуле, а один в Module1\Sub qw(), а второй в UserForm1\Private Sub CommandButton1_Click() 

Значит он должен быть описан строго в common-модуле (в данном случае это только Module1, если таковых нет - придется создать) как Publc

Код

Public x as Integer

Sub qw()
wq()
y=x*10
End sub

Sub wq()
x=13
End sub


Если это путь - то переменная соответственно должна быть строковая (или Variant, или юзерского типа с компонентом типа строка).

Автор: Izuver 27.9.2006, 22:24
Цитата(Akina @ 27.9.2006,  12:24)

Public x as Integer

Да, да, именно так я прочитал сегодня в книжке, только работает не при Public x As Integer, а при Public x As String, хотя разницы в них не смыслю.

Автор: Cyric 28.9.2006, 11:43
Integer - целочисленная переменная, String - строковая.
Соответственно для значения 13 подойдёт первая переменная, для строки пути к папке - вторая.

Если проблемы с типами, то можете их не указывать, по-умолчанию переменные создаются типа Variant.


А вобще через глобальные переменные передавать всё что попало я считаю не правильно.

Если нужная вам переменная это результат выполнения какой-то функции, то логично сделать её выходным параметром.

Код

Sub qw()
y=wq() * 10
End sub

function wq() as Integer
wq=13
End function


Чтобы вызывать функции из других модулей они должны быть описаны как public и обращаться к ним нужно так: (название модуля).(имя переменной/функции)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)