我有一个用户窗体,上面有2个组合框。
-一个作为带有团队名称的下拉列表,即:Team 1,Team 2,Team 3,-另一个组合框用作文本输入。
我想要一个VBA代码,按下操作按钮后,它会检查输入框的值,并将其与第一个组合框中的列表进行交叉引用。
-如果该框的值不在其中,则我希望它执行索引匹配功能,该功能将更改某些页面上的列表值并重新加载用户窗体。 -如果该框的值在那里,我希望它在消息框“无法更改团队,重复或其他内容”时提示用户。
我尝试了变量,对于每个语句和列表索引。到目前为止没有运气。
我已经对代码进行了很大的更改,以至于我没有任何半有效的示例,但是我将添加它(我知道它已损坏),但是我将尝试传达我想发生的事情:
KEY:Combobox1 = Select_Team(下拉列表)Combobox2 = Change_Team(输入)
For Each item In Select_Team
If Select_Team.listindex = Change_Team.Value Then
MsgBox "Duplicate"
Else:
MsgBox "This was changed"
'(This code works, I just need to implement the IF function)
Evaluate("=INDEX('Teams'!B2:S21,2,MATCH(""" & Select_Team.Value & """,'Teams'!B3:S3,0))") = Me.Change_Team.Value
Unload Me
Edit_Teams.Show
我让它工作了,但是我无法标记重复项。我最终有了一个组合框:
Team 1
Team 1
Team 1
Team 4
Team 5
Team 6
Team 7
团队是从单元格值的另一页中拉出来的,因此这些项目是“硬编码的”,因此不能被listindex -1删除。
仅当Change_Team值不在下拉组合框中时,我希望索引匹配函数更改组名(确实如此)。
答案 0 :(得分:1)
我相信您的错误在于您如何解释ComboBox.ListIndex
。此属性返回一个整数,而不是相应项目的值。实际上,在您的代码中,按原样使用item
就足够了。
For Each item In Select_Team.List
If item = Change_Team.Value Then
MsgBox "Duplicate"
Exit Sub
End If
Next item
MsgBox "This was changed"
Evaluate("=INDEX('Teams'!B2:S21,2,MATCH(""" & Select_Team.Value & """,'Teams'!B3:S3,0))") = Me.Change_Team.Value
Unload Me
Edit_Teams.Show
如果正确声明了变量,则此修改后的代码版本应该可以工作。另外,我不知道您的设置是否完整,但是使用ComboBox.Value和ComboBox.Text时要小心。
希望这行得通,祝您好运!