如何 select 突出显示的列表框项目添加到文本框

How to select highlighted listbox item to add to textbox

我的代码有一个列表框,里面装满了常见的小文本字符串,用户可以单击这些文本框将其添加到文本框中,而无需手动输入。 除了无法再次单击先前选择的项目以添加到文本框外,它在任何地方都有效。

我试过设置 listbox.selected = -1 和 listbox1.value ="",当我这样做时,文本被添加了两次并且没有被取消选择。 有一次我能够制作一个只执行 listbox1.value = "" 的按钮并且它有效,但是当我在我的代码之后添加它时它失败并执行双文本操作。

Private Sub ListBox1_Click()
For i = 0 To ListBox1.ListCount - 1
If ListBox1.selected(i) Then
selecteditemtext = ListBox1.List(i)
End If
Next i
TextBox2.Text = TextBox2.Text & selecteditemtext & ", "

我需要的选中的列表框项在单击后变为未选中状态,因此如果需要可以再次单击它。

当我 运行 这段代码逐行工作时。但总的来说它添加了两次文本。

Private Sub ListBox1_Click()
For i = 0 To ListBox1.ListCount - 1
If ListBox1.selected(i) Then
selecteditemtext = ListBox1.List(i)
End If
Next i
TextBox2.Text = TextBox2.Text & selecteditemtext & ", " 
call listdeselect
end sub

sub listdeselect()
sheet1.listbox1.value = ""
end sub

我相信我有你的解决方案:)

在MouseUp事件中控制取消选择如下图:

Private Sub ListBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    ListBox1.ListIndex = -1
End Sub

只要您不中断 MouseUp 事件(例如使用 MsgBox),这似乎就可以正常工作。

我使用的示例代码如下:

Private Sub UserForm_Activate()
    ListBox1.AddItem "asd"
    ListBox1.AddItem "sad"
    ListBox1.AddItem "dsa"
    ListBox1.AddItem "das"
End Sub

Private Sub ListBox1_Click()
    Sheets(1).Cells(1).Value = ListBox1.List(ListBox1.ListIndex)
    'MsgBox "hi"   'notice this disrupts the MouseUp event...
End Sub

Private Sub ListBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    ListBox1.ListIndex = -1
End Sub

希望这能解决您的问题, 干杯