在用户窗体上使用一个button来获得一个variables并继续子

我在excel中有一个用户窗体,其中一个combobox使用另一个窗体的范围编译下拉菜单。 我已经使用范围内的字典定义了下拉列表,并强制combobox进行匹配(这样做是为了确保用户在添加新组件之前尝试查找公司)。 但是,我希望他们能够在需要的时候添加新公司,因此有一个标签为“添加公司”的button,现在需要将他们input的公司添加到列表/字典中,有什么想法?

我想避免必须启动一个全新的用户表单,最好我想到一个input框on_click的button,但我不知道如何强制该variables回到原来的用户窗体。

我目前的代码是:

Private Sub UserForm_Initialize() Dim Acctsht As Worksheet Dim ValSet Dim FinanInst Dim objFinanInst As Object Dim objAcctType As Object Dim objNickname As Object Dim objFourDig As Object Dim objAcctClass As Object Dim objDescript As Object Dim CompanyDict As New Scripting.Dictionary Dim Tempsht As Worksheet Dim NewCompTemp As String Set Acctsht = ActiveWorkbook.Sheets("Accounts") With Acctsht.Range("b2:b" & Range("b:b").SpecialCells(xlLastCell).Row) ValSet = .Value End With With CompanyDict .comparemode = 1 For Each FinanInst In ValSet If Not .exists(FinanInst) Then .Add FinanInst, Nothing Next If .Count Then CBoxFinanInst.List = Application.Transpose(.keys) End With With CboxAcctType .AddItem "Checking Account" .AddItem "Fixed Loan" .AddItem "Investment Account" .AddItem "Money Market Account" .AddItem "Revolving Credit" .AddItem "Savings Account" End With With CBoxAcctClass .AddItem "Asset" .AddItem "Liability" End With End Sub Private Sub CButtonAddCompany_Click() Dim NewCompTemp As String Unload FrmCreateAccount NewCompTemp = InputBox("Please enter new company exactly as you wish it to appear", Title:="Create New Company") FrmCreateAccount.Show (NewCompTemp) Exit Sub End Sub 

为了回应Jean-Pierre的评论,我尝试了下面的代码,但它仍然不起作用:

Private Sub CButtonAddCompany_Click()

 Dim NewCompTemp As String Dim Acctsht As Worksheet Dim CompanyDict As New Scripting.Dictionary Set Acctsht = ActiveWorkbook.Sheets("Accounts") NewCompTemp = InputBox("Please enter new company exactly as you wish it to appear", Title:="Create New Company") With Acctsht.Range("b2:b" & Range("b:b").SpecialCells(xlLastCell).Row) ValSet = .Value End With With CompanyDict .comparemode = 1 For Each FinanInst In ValSet If Not .exists(FinanInst) Then .Add FinanInst, Nothing Next If .Count Then CBoxFinanInst.List = Application.Transpose(.keys) End With With CompanyDict .Add CompanyDict.Count + 1, NewCompTemp End With Exit Sub 

结束小组

只有combobox中的原始下拉列表出现,无论input什么内容并以NewCompTemp存储。

我明白了,谢谢让皮埃尔送我正确的方向! 我没有意识到我可以运行子程序,并将它重置在窗体上的字典。

本质上,字典是从初始化动作设置的,但是,我没有意识到我可以在button_click动作中重新触发相同字典的设置。 一旦我做到了这一点,并结束这个子它返回到原来的userform子和瞧。 感谢所有的帮助,并感谢您的耐心。 (老生物学家在这里学习新技能)。