2016-10-17 5 views
-1

Я хотел бы использовать две пользовательские формы в Excel. первая пользовательская форма имеет две кнопки. Первая кнопка «Go» может дать номер 1 a и перейти ко второй пользовательской форме.Как передать значения между Userforms в Excel

Public a as Integer 
Private Sub Go_Click() 
UserForm2.Show 
a = 1 
End Sub 

И еще одна кнопка «Показать» может показать мне значения a и b.

Private Sub Show_Click() 
Load UserForm2 
Debug.Print a, b 
End Sub 

Во второй пользовательской форме он может распространять от 2 до b (и закрывать окно userform2).

Public b as Integer 
Private Sub Back_Click() 
Load UserForm1 
b = 2 
UserForm2.Hide 
End Sub 

Я хочу, чтобы, когда я нажимаю «Show» в первом UserForm, он может показать мне как а и Ь (1 и 2). Как я могу исправить свой код, пожалуйста?

ответ

1

этот код в Userform1:

Public a As Integer 
Public frm As UserForm2 

'Userform1 code. 
Private Sub Go_Click() 
    Set frm = New UserForm2 
    a = 1 
End Sub 

Private Sub Show_Click() 
    Debug.Print a, frm.b 
    Set frm = Nothing 
End Sub 

И это в userform2:

Public b As Integer 

'UserForm2 code 
Private Sub UserForm_Initialize() 
    b = 2 
End Sub 

'Go_Click' в Userform1 создает новый экземпляр класса из Userform2, который будет срабатывать на Userform_Initialise событие в Userform2 и установить значение переменной b. Затем вы можете ссылаться на него с переменной frm в Userform1.

Вы можете ввести текст в Userform2 и скрыть форму:
UserForm1 код:

Public a As Integer 
Public frm As UserForm2 

'Userform1 code. 
Private Sub Go_Click() 
    Set frm = New UserForm2 
    a = 1 
    frm.Show 
End Sub 

Private Sub Show_Click() 
    Debug.Print a, frm.b, frm.TextBox1 
    Set frm = Nothing 
End Sub 

UserForm2 код:

Public b As Integer 

Private Sub btnClose_Click() 
    Me.Hide 
End Sub 

'UserForm2 code 
Private Sub UserForm_Initialize() 
    b = 2 
End Sub 

enter image description here

+0

Спасибо очень много. Я пробовал ваш код, и он работает хорошо. И у меня есть еще вопрос об этом. Во второй пользовательской форме я хочу использовать битту вместо инициализации. Поскольку во второй пользовательской форме пользователь вводит какую-то вещь в текстовое поле, и я хочу использовать их в первой пользовательской форме. Это возможно? Или у вас есть несколько лучших способов? – Hiddenllyy

+0

И я попытался добавить новый botton, чтобы закрыть userform2, но есть ошибка 402, говорит, что я должен закрыть окно в первом плане. – Hiddenllyy

+1

Я добавил код, чтобы взять текст из Userform2. Кнопка закрытия скрывает пользовательскую форму, а 'Userform1.commandbutton2' удаляет' frm' из памяти. –

 Смежные вопросы

  • Нет связанных вопросов^_^