Возникли проблемы с использованием пользовательских форм в модуле

Я изначально использовал Application.Inputbox, чтобы получить пользовательский ввод, который работал нормально. Но когда я захотел увеличить параметры, он превысил ограничение в 254 символа. Таким образом пришлось использовать пользовательскую форму. Я новичок в пользовательской форме. Я использовал пользовательский ввод, чтобы выбрать регистр. Пользовательская форма в основном содержит комбинированный список (CmbType), прикрепленную метку и командную кнопку (ок). Выглядит хорошо и добавил свойство RowSource в свойстве. Все варианты можно было увидеть при исполнении. Пользовательский полный код:

 Sub ok_Click()
Type = CmbType.Value
Unload UserForm1
End Sub

Код модуля:

Sub  Ingredients()
Dim statements
UserForm1.Show
Select Case Type
Case Is= “Fruits”
….
Case Is =”Vegetables”
…
End Select
Unload UserForm1
…..
…..

Я получаю пользовательскую форму, но она не закрывается и в основном не идет к операторам case. Еще одна помощь, которая мне нужна, - это создать числовое значение, которое будет использоваться в операторе case, например 1-Fruits,2-Vegetables и т. Д.

1 ответ

Решение

Похоже, вы имеете дело с переменной областью действия.

Создайте модуль с именем globals. В модуле заявляю

Public iType as integer

Вы можете получить к нему доступ из любой точки вашего проекта. Не используйте имя переменной Тип. Это зарезервированное слово.

В форме нажмите кнопку ОК, используйте

iType = CmbType.Value
Unload me

В модуле использовать

UserForm1.Show
Select Case iType
Case 1
   'Fruits
Case 2
   'Vegetables
Case Else
   'Not sure what this food is
End Select

Вот немного больше информации о том, как можно использовать операторы case. http://www.techonthenet.com/excel/formulas/case.php

Кроме того, посмотрите на "Option Explicit". Добавление этого в верхней части каждой формы и модуля позволит вам узнать о таких проблемах, как переменные, которые вы пытаетесь использовать, которые не входят в сферу действия.

Другие вопросы по тегам