Excel VBA – 如何使用名称中的variables来打开用户窗体

我试图打开某个用户窗体的基础上,在一个工作表的单元格的值。 有17个用户窗体,所以我不想为每个表单使用17个if语句:

If ActiveCell.Value = 1 Then UserForm1.Show End If 

有没有一种方法可以使用variables来显示表单? 我在想:

 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 

我只需要能够使用variables来调用用户窗体。 这甚至有可能吗?

在此先感谢您的任何答案/build议!

-大卫

粘贴Harvey提供的链接代码,然后在代码中调整这一行:

 UserForms("UserForm" & i).Show ****THIS is what doesn't work 

至:

 ShowAnyForm ("UserForm" & i) 

哈维,我已经把它collections了!

你可以使用经常被忽视的VBA.UserForms对象。 看到这个链接完全descibes你需要做什么。

我在这里解释是没有意义的。

哈维

我从来没有来过@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 

至less比17 If语句简单。