【问题标题】:In VBA how do I get the combobox to remove the item after unchecking the checkbox?在VBA中,取消选中复选框后如何让组合框删除项目?
【发布时间】:2023-03-05 10:12:01
【问题描述】:

在我解释我的问题之前先介绍一下背景知识。此工作表包含多个复选框,其中列出了各种机器部件。同一文件的另一张表包含部件标题和部件号。

VBA 代码的作用是查看已选中的复选框,然后参考零件编号表,获取零件名称和编号并将其添加到组合列表中。

代码按预期工作,但问题在于重复。例如,如果有人选中和取消选中一个复选框,组合框将有多个相同部分的条目。

这是我想要的一些帮助。基本上我想要实现的是当有人取消选中一个复选框时,该部分名称和编号将从组合框中删除。代码如下:

Private Sub CheckBox1_Click()
     Dim SearchString As String

     Dim SearchRange As Range

     SearchString = CheckBox1.Caption

     Dim ans As String

     Set SearchRange = Sheets("Table of Part Numbers").Range("A39:A45").Find(SearchString, 
     LookIn:=xlValues, lookat:=xlWhole)

     If SearchRange Is Nothing Then MsgBox SearchString & "  Not Found": Exit Sub

ans = SearchRange.Offset(0, 1).Value

ComboBox1.AddItem ans

End Sub

【问题讨论】:

  • 注意:我不能使用选项按钮。
  • 任何更改后清除列表运行宏以根据选定的复选框重建它。

标签: excel vba


【解决方案1】:

在进一步调试和学习 VBA 之后,我自己找到了一个解决方案,所以我想我会自己发布解决方案,以防有人最终需要类似的东西:

Private Sub CheckBox1_Click()
Dim SearchString As String
Dim SearchRange As Range
Dim ans As String
Dim i As Long
If CheckBox1.Value = True Then
    SearchString = CheckBox1.Caption
    Set SearchRange = Sheets("Table of Part Numbers").Range("A38:A45").Find(SearchString, LookIn:=xlValues, lookat:=xlWhole)
    If SearchRange Is Nothing Then MsgBox SearchString & "  Not Found": Exit Sub
    ans = SearchRange.Offset(0, 1).Value
    ComboBox1.AddItem ans
End If


If CheckBox1.Value = False Then
    SearchString = CheckBox1.Caption
    Set SearchRange = Sheets("Table of Part Numbers").Range("A38:A45").Find(SearchString, LookIn:=xlValues, lookat:=xlWhole)
    If SearchRange Is Nothing Then MsgBox SearchString & "  Not Found": Exit Sub
    ans = SearchRange.Offset(0, 1).Value

For i = ComboBox1.ListCount - 1 To 0 Step -1
  If ComboBox1.List(i) = ans Then
    ComboBox1.RemoveItem (i)
  End If
Next
End If
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-08
    • 1970-01-01
    相关资源
    最近更新 更多