我使用UserForm创建了Word 2010 VBA宏子服务器。 Sub在表单文档中搜索== Codes ==,将找到的== code ==作为标签放入Userform中,然后允许用户将他们输入的== code ==替换为Combobox(同一UserForm的一部分)。
然后将每个输入数据串保存到UserForm中的Combobox列表中,以便以后选择(如果需要)。
这可以正常工作,直到此宏/用户形式到期,因为搜索的文档已完成(或取消)。
然后我想打开下一个表单文档,并在新发布的同一个Macro / Sub中保留前一个组合框的数据列表(作为填充下一个打开的文档的选项 - 例如,代码== Client名称==会经常出现,我宁愿选择一个组合框列表条目而不必一遍又一遍地输入客户名称。
但我似乎无法将此组合框放在此Macro Sub的新发布中,并使用之前的组合框数据填充 - 即使我将此例程作为单独的模块隔离并使用&#预定义变量34;公共"尺寸。
所以,在我试图解决这个问题之前,我只是一个简单的问题:
宏终止后,所有的公共变量都被删除了#34;?当我以前在DOS WP.51宏中编程时,你可以无休止地将数据字符串保存在RAM中(直到你"杀死"它们,或关闭WP)
如果公共变量没有被删除",有人可以给我一个代码示例,通过该代码可以保留公共变量并将其填充到重复启动的组合框用户表单中。
任何想法,无论多么简短,都会有所帮助
非常感谢。 。 。
麦克
答案 0 :(得分:1)
不完全确定您要尝试做什么,但我建议的是以下内容(假设表单已命名," UserForm1"然后" UserForm2& #34;:
1)创建一个用于打开表单的模块:
Sub test()
UserForm1.Show
'Rest of things that you want to do...you will be able to access the values in your combobox in userform1
UserForm2.Show
End Sub
2)在您的UserForm1中,包含一个关闭表单的按钮,并包含以下代码:
Sub btn_Exit_Click()
Me.Hide
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
Cancel = True
MsgBox "The X is disabled, please use a button on the form.", vbCritical
End If
End Sub
这将允许您保持对UserForm的控制,并确保您可以保留值。可能会禁用“关闭”按钮,但我无法弄明白(我对表单的体验主要在Access中,而且具有不同的属性)。
隐藏表单会保留值,以便您可以查看它们,而当用户关闭表单时,您将丢失其中的值。
*注意:禁用从VBA Express
获取的X按钮的代码