不确定如何短语我的问题 - 所以我很抱歉,如果它似乎有点模糊。我似乎还有其他的方法,比如检查多个组合框等,但没有特别涉及到我正在寻找的东西,不确定我是否试图做一些不可能的事情。Excel VBA - 检查combolist值并添加(如果尚未添加)
我想要做的是检查我的组合框,看看一个值是否已经存在,如果没有,并添加它。
工作簿打开并调用UserForm1.show - 这会触发Userform初始化设置一些文本框默认值(空和设置像autosize等)这很好,在这个过程中我称之为个人函数DrpDwn_init - 想法是DrpDwn_init在组合框中选中并设置值。我可以调用该函数,甚至可以添加值,但我无法弄清楚如何检查值是否已经存在。
我目前所面对的是以下几点:
Public Function DrpDwn_Init()
Dim Templates() As String
Templates = Split("Stuff 1*Stuff 2", "*")
For i = 0 To UBound(Templates)
If Templates(i) <> UserForm1.DrpDwn_Templates.List(i) Then
MsgBox "Does Not match"
Else
MsgBox "Does Match"
End If
Next i
End Function
也使用
For i = 0 To UBound(Templates)
If CStr(Templates(i)) <> UserForm1.DrpDwn_Templates.List(i) Then
For i = 0 To UBound(Templates)
If Templates(i) <> CStr(UserForm1.DrpDwn_Templates.List(i)) Then
For i = 0 To UBound(Templates)
If CStr(Templates(i)) <> CStr(UserForm1.DrpDwn_Templates.List(i)) Then
以及使用“UserForm1.DrpDwn_Templates.ListIndex(I)
我尝试已经尝试过很多方法,有时我得到的唯一错误是,突然Userform1.show变得不可接受!?即使我从来没有碰过这部分代码,我真的无法弄清楚如何循环访问数组,检查每个数组索引项以查看它是否存在于组合框中,并根据它是否是否执行任务。
真的希望有人轮在这里可以帮助我搞清楚了这一点 (顺便说一句,我已经检查了我的所有代码引用函数等是正确的,如果我在这里做错别字我道歉。)
我没有意识到我需要循环浏览下拉菜单中的所有选项 - 我认为这在事后看来是有道理的 - 代码看起来很合理 - 我可以跟随它发生的事情。 *按下输入换行符 - 卫生署* 我已经尝试了代码,但我得到: “运行时错误‘13’: 类型不匹配” 强调了: 对于j = 0到UserForm1.DrpDwn_Templates。 ListCount –
这可能是因为.ListCount返回一个长整数,而i/j是一个整数。您可能想要将i/j声明为Long /查看是否可以找到更好的方法来获取列表框中的项目总数,或者使用'cInt()'将表达式转换为整数 – CallumDA
我刚刚尝试过做同样的事情,但是: 'Dim m as int' 'm = UserForm1.DrpDwn_Templates.ListCount' 这也给类型不匹配? 加入'MsgBox UserForm1.DrpDwn_Templates.ListCount' 这显示在一个msgbox中的列表计数 - 但然后由于某种原因抛出类型不匹配后,我确定MsgBox - 这真是莫名其妙,这似乎应该是一个相当简单努力 –