【发布时间】:2017-12-12 05:19:47
【问题描述】:
我是第一次使用 Excel 用户表单,但遇到了一些麻烦。本质上,我想向我的用户询问三个值,然后将这些值作为变体保存在我的 vba 代码中以供以后使用。我最初设置我的 VBA 代码以使用三个单独的输入框来获取这三个值,但我发现这种拼写错误经常发生。相反,我希望用户只从值列表中进行选择。
这是盒子的样子:
我只希望那里的两个组合框每个都有两个选项,并且它们将始终是相同的选项,所以我不想将它们放在工作表上的列表中,我希望它成为VBA 代码。我的用户窗体名为 UserFormPYBTMT,组合框名为 cboxlBT 和 cboxlMT,文本框为 tbxxlPY。 这是我尝试过的:
Public Sub UserFormPYBTMT_Initialize()
'fill combobox for BT
userformPYBTMT.cboxlBT.AddItem ("BTChoice1")
userformPYBTMT.cboxlBT.AddItem ("BTChoice2")
'fill combobox for MT
userformPYBTMT.cboxlMT.AddItem ("MTChoice1")
userformPYBTMT.cboxlMT.AddItem ("MTChoice2")
End Sub
---------------------
Public Sub btnxlOK_Click()
End Sub
显然我那里也有 OK 按钮(我还没有编写任何代码),此时我希望 VBA 将组合框值保存为我的变体并关闭用户窗体。我要使用这些值的宏如下所示:
Sub SATV5()
Dim IBPYSAT As Variant
Dim IBMTSAT As Variant
Dim IBBTSAT As Variant
'Show the user form where we get the inputs for PY, MT, BT
userformPYBTMT.Show
IBPYSAT = userformPYBTMT.tbxxlPY.Value
IBMTSAT = userformPYBTMT.cboxlMT.Value
IBBTSAT = userformPYBTMT.cboxlBT.Value
如果有人对用户表单和组合框有一定的了解,可以给我一些指点,我将非常感激。谢谢。
【问题讨论】:
-
你能澄清一下实际问题是什么吗?还有你说的保存是什么意思?您是使用这些值然后丢弃,还是尝试永久保存?
-
@jcarroll 我想有两个广泛的问题。如何列出组合框的选项,因为我使用的代码实际上并没有工作(当我打开用户窗体时,组合框是空白的并且不显示我的两个选项),以及如何设置组合框的值等于我的变体(这也不起作用)。我将来会重用用户表单,那时我想从用户那里获取新值以“保存”或将我的变体设置为。
-
尝试将
UserFormPYBTMT_Initialize()更改为UserForm_Initialize(),我认为您的代码甚至没有被调用。至于保存值,一旦关闭 Excel,就无法将值存储在变量中。您需要将它们保存到数据库或工作表中。 -
谢谢,我会试试的。我不想将它们长时间存储为变量,只想在我的其他宏中使用它们。我只想暂时将我的变体设置为等于组合框的值。
-
@jcarroll 好的,UserForm_Initialize() 工作了,太棒了!但我不明白为什么。如果我有多个用户表单,所有这些都以 Sub UserForm_Initialize() 开头吗?我以不同的方式命名用户表单并不重要?
标签: vba excel combobox userform