Как передать значение переменной VBA excel?

программирование VBA MS Excel

Есть фаил таблиц Excel. на первом листе мы производим вычисления, то есть код находится на листе1 VBA. с этого же листа запускается форма userform1.show и на форме происходит вычесления. Мне нужно передать значение пееменной из результатов произведенных на листе 1 в форму и с формы потом снова передать на лист1. Помогите пожалйуста.

Примечание:
нет это не то...форма все равно не увидит..переменную..потому что рабоатет отдельно....

Правильно решение это обращение через класс...но вот как это обращение сделать я что то не пойму.

Примечание:
отвечаю сам себе создаем класс модуль ' Çàêðûòûå ÷ëåíû êëàññà, ïðÿìîé äîñòóï ê íèì íåâîçìîæåí -
' òîëüêî ÷åðåç ñâîéñòâà
Private fLastName As String
' ôàìèëèÿ
Private fFirstName As String
' èìÿ
Private fMiddleName As String
' îò÷åñòâî
Private fBirthDay As Date
' äàòà ðîæäåíèÿ
Private fGender As String * 3
' ïîë
Private fContacts As String
' àäðåñ è òåëåôîí
' Êîíñòðóêòîð êëàññà. Âûçûâàåòñÿ â ìîìåíò ñîçäàíèÿ îáúåêòíîé ïåðåìåííîé

Private Sub Class_Initialize()


fLastName = "Ôàìèëèÿ íå óêàçàíà"
fFirstName = "Èìÿ íå óêàçàíî"
fMiddleName = "Îò÷åñòâî íå óêàçàíî"
fContacts = "Àäðåñ íå óêàçàí"
End Sub
' Ñâîéñòâà äëÿ ÷òåíèÿ
Public Property Get LastName() As String


LastName = fLastName
End Property
Public Property Get FirstName() As String

FirstName = fFirstName
End Property
Public Property Get MiddleName() As String

MiddleName = fMiddleName
End Property
Public Property Get BirthDay() As Date


BirthDay = fBirthDay
End Property
Public Property Get Gender() As String

Gender = fGender
End Property
Public Property Get Conta()


cts() As String
Contacts = fContacts
End Property
' Ñâîéñòâà äëÿ çàïèñè
Public Property Let LastName(ByVal NewValue As String)

fLastName = NewValue
End Property
Public Property Let FirstName(ByVal NewValue As String)


fFirstName = NewValue
End Property
Public Property Let MiddleName(ByVal NewValue As String)


fMiddleName = NewValue
End Property
Public Property Let BirthDay(ByVal NewValue As Date)


fBirthDay = NewValue
End Property
Public Property Let Gender(ByVal NewValue As String)

fGender = NewValue
End Property
Public Property Let Contacts(ByVal NewValue As String)

fContacts = NewValue
End Property
' Ñâîéñòâà ÒÎËÜÊÎ ÄËß ×ÒÅÍÈß (íåò ïàðíûõ Property Let)
Public Property Get FullName() As String


FullName = fLastName & " " & fFirstName & " " & fMiddleName
End Property
Public Property Get FullInfo() As String


FullInfo = fLastName & Chr(9) & fFirstName & Chr(9) & fMiddleName & Chr(9) & CStr(fBirthDay) & Chr(9) & fGender & Chr(9) & fContacts
End Property
' Ìåòîä äëÿ èçìåíåíèÿ ñâîéñòâ îáúåêòà.
' Âñå ïàðàìåòðû îáúÿâëåíû êàê íåîáÿçàòåëüíûå (Optional).
' Ýòî ïîçâîëÿåò èçìåíÿòü òîëüêî íåîáõîäèìûå ïîëÿ êëàññà.
' Èçìåíÿòü ïîëÿ ìîæíî è ÷åðåç ñîîòâåòñòâóþùèå ñâîéñòâà äëÿ çàïèñè (Property Let),
' ýòîò ìåòîä ïðèâåäåí äëÿ ïðèìåðà
Public Sub EditInfo(Optional LastName As String, Optional FirsName As String, Optional MiddleName As String, Optional BirthDay As Date, Optional Gender As String, Optional Contacts As String)


fLastName = LastName
fFirstName = FirstName
fMiddleName = MiddleName
fBirthDay = BirthDay
fGender = Gender
fContacts = Contacts
End Sub


и в самом проекте ну что обращаться пишем так Private Sub CommandButton1_Click()
Dim stud As New CStudent
' ýêçåìïëÿð êëàññà CStudent
' Îáðàùåíèÿ ê ñâîéñòâàì îáúåêòà
stud.FirstName = "Èâàí"
stud.LastName = "Ïåòðîâ"
stud.Contacts = "ã.Îìñê, ïð.Ìèðà, 11, ê.8. ò/ô (3812) 65-96-11"

MsgBox stud.LastName
End Sub

то есть теперь можем обращатся где бы мы не были))

Примечание:
Евгений вы не правы....Объявление глабально не поможет....во первых действие получается вне этой книги.......а вот если было бы на разных листах то возможно получилось бы
Ответы:
Простой пример:
Переменные можно объявлять не только внутри процедур, но и глобально (в самом верху). Тогда их значения становятся доступными с любого объекта или процедуры книги. И, соответственно, через них можно обмениваться информацией.
Правильно заданный вопрос - правильно полученный ответ. В связи с этим уточнение: вы передаете данные между VBA кодом формы и VBA кодом макроса? Или между VBA кодом и данными на листе Excel?
из процедуры обработки какого-либо события можно обратиться к ячейке.
Если речь об области видимости переменных и нужно передавать между макросами и процедурами формы, то объявлять нужно в модуле, как public


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.