Excel 如何使用名称中的变量打开Userform?
我试图根据工作表中一行的单元格值打开UserForms。共有17个UserForms,因此我不想对每个表单使用17个if语句,如下所示:Excel 如何使用名称中的变量打开Userform?,excel,vba,userform,Excel,Vba,Userform,我试图根据工作表中一行的单元格值打开UserForms。共有17个UserForms,因此我不想对每个表单使用17个if语句,如下所示: If ActiveCell.Value = 1 Then UserForm1.Show End If 有没有一种方法可以使用变量来显示表单 我的想法大致如下: Dim i 做 如果ActiveCell.Value=”“,则 退出DO 如果结束 i=ActiveCell.Value UserForms(“UserForm”&i)。显示****这是不起
If ActiveCell.Value = 1 Then
UserForm1.Show
End If
有没有一种方法可以使用变量来显示表单
我的想法大致如下:
Dim i
做
如果ActiveCell.Value=”“,则
退出DO
如果结束
i=ActiveCell.Value
UserForms(“UserForm”&i)。显示****这是不起作用的
ActiveCell.Offset(0,1)。选择
环
您可以使用经常被忽略的VBA.UserForms对象。看看哪个完整地描述了你需要做什么
我在这里解释没有意义
哈维我从来没有遇到过@Harvey提到的方法(尽管我很喜欢),所以我会使用一些精选案例陈述:
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条If语句更简单。粘贴Harvey提供的链接中的代码,然后调整代码中的这一行:
UserForms("UserForm" & i).Show ****THIS is what doesn't work
致:
这是一个很棒的链接,哈维,我已经把它添加到书签了 最简单的方法是:
Dim activeuf as Object
Set activeuf = UserForm & i
activeuf.show
也许它对提问的人不起作用,但我相信它将帮助将来检查此问题的人获得由其字符串名称定义的
UserForm
对象
Function Form(Name As String) As Object
Set Form = CallByName(UserForms, "Add", VbMethod, Name)
End Function
Sub Test()
Dim strFormName As String
strFormName = "UserForm1" ' <-- replace by your lookup code instead
Form(strFormName).Show
End Sub
函数形式(名称为字符串)作为对象
Set Form=CallByName(UserForms,“Add”,VbMethod,Name)
端函数
子测试()
作为字符串的Dim strFormName
strFormName=“UserForm1”'哈维,感谢您的回复!不过,我不知道该如何把它融入到我的工作中去。我将在代码中使用哪种方法、语法等将userforms替换为VBA.userforms,这可能会起作用。如果没有阅读我之前发送给你的页面,请进行实验。让我看看你尝试了什么。SO的全部目的是让你在这里解释一下
Function Form(Name As String) As Object
Set Form = CallByName(UserForms, "Add", VbMethod, Name)
End Function
Sub Test()
Dim strFormName As String
strFormName = "UserForm1" ' <-- replace by your lookup code instead
Form(strFormName).Show
End Sub