检测Excel VBA ListBox中的选择更改

问题描述 投票:0回答:2

我需要检测何时在列表框中进行选择更改,以便在选择或取消选择项目时将值写入工作表。

似乎没有事件可以捕捉到这一点。不会触发OnChange或OnClick。我尝试使用OnMouseUp事件,但确实在正确的时间触发了该事件,但似乎随后禁用了选择-因此该事件触发了,但是列表框未在所选择的行的状态中记录更改。

enter image description here

excel vba listbox
2个回答
0
投票

您可以使用它来触发事件。

Private Sub ListBox1_Change()
    MsgBox "Something changed"
End Sub

将其放入表单代码中。


0
投票

您确实应该使用ListBox_Change事件来捕获此事件。进行任何更改时,您需要枚举项目,并查看是否已选择它们以更新任何工作表数据

例如:

Private Sub ListBox1_Change()
    Dim wsTarget As Worksheet: Set wsTarget = Worksheets("Sheet1")
    Dim wsTargetRange As Range: Set wsTargetRange = wsTarget.Range("A1:A100")

    Dim i As Long, RowIndex As Long

    RowIndex = 1
    wsTargetRange.ClearContents

    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) = True Then
            wsTargetRange.Item(RowIndex) = ListBox1.List(i)
            RowIndex = RowIndex + 1
        End If
    Next
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.