我需要检测何时在列表框中进行选择更改,以便在选择或取消选择项目时将值写入工作表。
似乎没有事件可以捕捉到这一点。不会触发OnChange或OnClick。我尝试使用OnMouseUp事件,但确实在正确的时间触发了该事件,但似乎随后禁用了选择-因此该事件触发了,但是列表框未在所选择的行的状态中记录更改。
您可以使用它来触发事件。
Private Sub ListBox1_Change()
MsgBox "Something changed"
End Sub
将其放入表单代码中。
您确实应该使用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