Excel VBA – Как открыть Userform с использованием переменной в имени
Я пытаюсь открыть определенные UserForms на основе значений ячеек в одной строке листа. Есть 17 UserForms, поэтому я не хочу использовать 17 операторов if для каждой формы:
If ActiveCell.Value = 1 Then UserForm1.Show End If
Есть ли способ, которым я могу использовать переменную для отображения форм? Я думал о чем-то вроде:
Dim i Do If ActiveCell.Value = "" Then Exit DO End If i = ActiveCell.Value UserForms("UserForm" & i).Show ****THIS is what doesn't work ActiveCell.Offset(0,1).Select Loop
Мне просто нужно вызвать функцию UserForm с помощью переменной. Возможно ли это?
- Вызов пользовательской формы в Excel VBA и продолжение в зависимости от того, какая кнопка была нажата
- Excel VBA Userform
- Excel VBA Открыть книгу, выполнить действия, сохранить как, закрыть
- Excel VBA Userform Listbox Динамическое контекстное меню с использованием метода .OnAction
- отправка массовой электронной почты с помощью опции слияния из пользовательской формы vba
Заранее благодарим за любые ответы / предложения!
-Давид
- Скрыть строки на основе пользовательской формы
- Установите фокус обратно в окно приложения после показа пользовательской формы
- ярлыки для combobox не отображаются для одной команды, но для других команд
- UserForm ComboBox
- VBA Excel 2013: назначение значений массива из другой пользовательской формы
- Назначьте функцию VBA с нажатием кнопки динамически созданной кнопки в Excel Userform
- Входной ящик заполняет ячейки в таблице
- Проверка данных Excel
Вставьте код из предоставленной Харви, затем настройте эту строку в коде:
UserForms("UserForm" & i).Show ****THIS is what doesn't work
чтобы:
ShowAnyForm ("UserForm" & i)
Это отличная ссылка Харви, я добавил ее в закладки!
Вы можете использовать часто пропускаемый объект VBA.UserForms. См. Эту ссылку, которая полностью определяет, что вам нужно делать.
Нет смысла объяснять это здесь.
Харви
Я никогда не приходил по методу, указанному @Harvey (мне это нравится, хотя), поэтому использовал бы какой-то оператор Select Case:
Select Case .Cells(1,1).Value Case 1: FormOne.Show Case 2: FormTwo.Show ' And so on and do forth... Case Else: MsgBox ("Invalid entry") End Select
Проще чем 17 Если утверждения, по крайней мере.