excel - Excel VBA - 带有 If 语句的用户窗体组合框
问题描述
我创建了一个用户表单。代码尚未完成,但尝试在组合框上设置条件。这是代码:
Private Sub UserForm_Initialize()
With SupText
.AddItem "Sup1"
.AddItem "Sup2"
.AddItem "Sup3"
End With
With ProdText
.AddItem "Prod1"
.AddItem "Prod2"
.AddItem "Prod3"
.AddItem "Prod4"
.AddItem "Prod5"
End With
With UnitText
.AddItem "kL"
.AddItem "T"
End With
With StaText
.AddItem "In Progress"
.AddItem "Awaiting"
.AddItem ""
End With
With ProLText
.AddItem "1"
.AddItem "4"
.AddItem "1&4"
.AddItem "2"
.AddItem "3"
.AddItem "2&3"
.AddItem "WOPL"
.AddItem "BOPL"
.AddItem "Industry Line"
End With
End Sub
所以,我想要做的是ProLText
组合框根据SupText
. 当我使用if
语句时,它不起作用。例如,如果从 SupText 组合框中选择 Sup1,我只想给出 ProLText 组合框的前 6 个选项,则 Sup2 给出下一个 2,而 Sup3 给出最后一个项目。但是由于某种原因,它给出了 else 语句的结果,而不是 if 或 else if 的结果。
任何想法为什么它不起作用?
问候。
解决方案
.Style
将组合框的fmStyleDropDownList
- 不要将项目添加
ProLText
到UserForm_Initialize()
- 在
SupText_Click()
事件清除ProLText
并重新添加相关项目。
代码
Private Sub SupText_Click()
If SupText.ListIndex = -1 Then Exit Sub
ProLText.Clear
Select Case SupText.Text
Case "Sup1"
With ProLText
.AddItem "1"
.AddItem "4"
.AddItem "1&4"
.AddItem "2"
.AddItem "3"
.AddItem "2&3"
End With
Case "Sup2"
With ProLText
.AddItem "WOPL"
.AddItem "BOPL"
End With
Case "Sup3"
With ProLText
.AddItem "Industry Line"
End With
End Select
End Sub
或者更短的版本
Private Sub SupText_Click()
If SupText.ListIndex = -1 Then Exit Sub
With ProLText
.Clear
Select Case SupText.Text
Case "Sup1"
.AddItem "1"
.AddItem "4"
.AddItem "1&4"
.AddItem "2"
.AddItem "3"
.AddItem "2&3"
Case "Sup2"
.AddItem "WOPL"
.AddItem "BOPL"
Case "Sup3"
.AddItem "Industry Line"
End Select
End With
End Sub
推荐阅读
- c++ - 使方法常量后声明不兼容
- matplotlib - Jupyter Notebook 绘图在顶部和底部被截断
- swift - 如何将图像插入字符串末尾并在 UITextView 中快速插入多个图像?
- javascript - 如何解决异步调用中的“未定义”问题以在 redux 的操作创建者中分派?
- c# - 通过标签名称获取所有元素并循环调用它们(C# webbrowser)
- arrays - 如何从数组中删除对象
- android - 这个新的 Android studio 3.5 Navigation Drawer 示例代码如何运行
- javascript - 无法调用存储在传递给 jQuery .on() 的变量中的函数名
- c - 如何在makefile中正确编写模式规则?
- sql - SQL 通过替换计算总和