【问题标题】:If combobox1 includes an item in combobox2 list, then return error如果 combobox1 在 combobox2 列表中包含一个项目,则返回错误
【发布时间】:2019-12-12 23:27:07
【问题描述】:

我有一个用户窗体,上面有 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 值不在下拉组合框中。

【问题讨论】:

    标签: excel vba combobox duplicates userform


    【解决方案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 时要小心。

    希望这行得通,祝你好运!

    【讨论】:

    • 嗨洛恩。我明白你的意思,把整数和字符串混在一起。当我按原样使用您的代码时,它说“对象不支持此属性或方法”所以我在代码前面放了一个“将项目作为对象”,现在它不起作用。我不太喜欢声明的变量,我错过了什么:0
    • 事实上,您甚至根本不需要将“item”声明为变量。上面代码的唯一问题是我的错误,它应该是“在 Select_Team.List 中”而不是“在 Select_Team 中”。 Select_Team 是一个 ComboBox 对象,而 ComboBox.List 是一个 Variant,我们可以通过它进行迭代。我已经相应地编辑了我的答案,我希望它现在可以工作。对不起,我第一次没有注意。 (也可以考虑使用“item”以外的其他名称。它可以保留。)
    猜你喜欢
    • 1970-01-01
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 2018-04-07
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多