excel - 检测 Excel VBA ListBox 中的选择更改

标签 excel vba listbox

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

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

enter image description here

最佳答案

您确实应该使用 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/

相关文章:

sql-server - 从 Excel 将参数传递到 SQL Server 上的 MS Query 中的临时变量

vba - 在VBA排序中设置范围

c# - 虚拟化堆栈面板返回空选定项

c# - UWP 列表框中的文本到语音 (c#')

WPF 相对源 - 找不到与引用绑定(bind)的源

Excel - 如何使用 "tags"的列进行过滤

c# - 使用 npoi 单元格范围地址读取 excel

ms-access - Dlookup 的问题

Excel VBA::在循环中查找函数

excel - VBA Office 2007 创建 2003 Excel 工作表