我需要检测列表框中何时进行选择更改,以便在选择或取消选择项目时将值写入工作表。
似乎没有一个事件可以捕捉到这一点。 OnChange 或 OnClick 不会被触发。我尝试使用 OnMouseUp 事件,这确实在正确的时间触发,但似乎随后禁用了选择 - 因此事件触发,但列表框没有注册所选行的状态更改。
最佳答案
您确实应该使用 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
关于excel - 检测 Excel VBA ListBox 中的选择更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62066955/