VBA "All" 带有列表框取消选择循环问题的复选框
VBA "All" checkbox with listbox deselect loop issues
我有一个复选框,用于 "ALL"(默认选中)多选列表框中的选择,当列表框中的项目被选中时,该复选框将被取消选中。我还对其进行了编码,以便在选择 "ALL" 时清除列表框选择并选中该框。它最终循环遍历不同的潜艇,让用户感到厌烦。
例如,当我单击列表框中的某个项目时,它会选择该值,然后取消选中该复选框。由于复选框被取消选择,它通过列表框返回并取消选择所选项。它在两个潜艇之间循环几次,最后只能正常工作一半的时间。
我可以防止进入另一个子吗?
有没有更好的逻辑,所以它不会像现在这样循环?
或者也许有更好的方法来实现这一目标?
多选列表框:
Private Sub Mkts_Change()
If Me.cheMkts.Value = True Then
Me.cheMkts.Value = False
End If
End Sub
复选框:
Private Sub cheMkts_Click()
Dim i As Integer
For i = 0 To Mkts.ListCount - 1
If Me.Mkts.Selected(i) = True Then
Me.Mkts.Selected(i) = False
End If
Next
End Sub
如何在 cheMtks_Click()
周围添加一个 If
语句?
这样,当您的代码自动取消选择它时,它不应触发循环。
Private Sub cheMkts_Click()
If Me.cheMkts.Value = True Then
Dim i As Integer
For i = 0 To Mkts.ListCount - 1
If Me.Mkts.Selected(i) = True Then
Me.Mkts.Selected(i) = False
End If
Next
End If
End Sub
谢谢你的帮助,鲁本。一方面纠正了错误,但另一方面我仍然遇到问题。当我进行选择并单击 "ALL" 框时,它会取消选中。
我想出了这段代码,它与你的建议结合起来效果很好,但只有当我选择了一个项目时。如果还有更多内容,那么它仍然会搞砸。我想 post 看看您或其他人是否可以建议多选的解决方案。
Private Sub Mkts_Change()
Dim i As Integer, count As Integer
For i = 0 To Mkts.ListCount - 1
If Me.Mkts.Selected(i) = False Then
count = count + 1
End If
Next
If Me.cheMkts.Value = True And count <> Mkts.ListCount Then
Me.cheMkts.Value = False
End If
End Sub
我有一个复选框,用于 "ALL"(默认选中)多选列表框中的选择,当列表框中的项目被选中时,该复选框将被取消选中。我还对其进行了编码,以便在选择 "ALL" 时清除列表框选择并选中该框。它最终循环遍历不同的潜艇,让用户感到厌烦。
例如,当我单击列表框中的某个项目时,它会选择该值,然后取消选中该复选框。由于复选框被取消选择,它通过列表框返回并取消选择所选项。它在两个潜艇之间循环几次,最后只能正常工作一半的时间。
我可以防止进入另一个子吗? 有没有更好的逻辑,所以它不会像现在这样循环? 或者也许有更好的方法来实现这一目标?
多选列表框:
Private Sub Mkts_Change()
If Me.cheMkts.Value = True Then
Me.cheMkts.Value = False
End If
End Sub
复选框:
Private Sub cheMkts_Click()
Dim i As Integer
For i = 0 To Mkts.ListCount - 1
If Me.Mkts.Selected(i) = True Then
Me.Mkts.Selected(i) = False
End If
Next
End Sub
如何在 cheMtks_Click()
周围添加一个 If
语句?
这样,当您的代码自动取消选择它时,它不应触发循环。
Private Sub cheMkts_Click()
If Me.cheMkts.Value = True Then
Dim i As Integer
For i = 0 To Mkts.ListCount - 1
If Me.Mkts.Selected(i) = True Then
Me.Mkts.Selected(i) = False
End If
Next
End If
End Sub
谢谢你的帮助,鲁本。一方面纠正了错误,但另一方面我仍然遇到问题。当我进行选择并单击 "ALL" 框时,它会取消选中。
我想出了这段代码,它与你的建议结合起来效果很好,但只有当我选择了一个项目时。如果还有更多内容,那么它仍然会搞砸。我想 post 看看您或其他人是否可以建议多选的解决方案。
Private Sub Mkts_Change()
Dim i As Integer, count As Integer
For i = 0 To Mkts.ListCount - 1
If Me.Mkts.Selected(i) = False Then
count = count + 1
End If
Next
If Me.cheMkts.Value = True And count <> Mkts.ListCount Then
Me.cheMkts.Value = False
End If
End Sub