如何 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
希望这能解决您的问题,
干杯
我的代码有一个列表框,里面装满了常见的小文本字符串,用户可以单击这些文本框将其添加到文本框中,而无需手动输入。 除了无法再次单击先前选择的项目以添加到文本框外,它在任何地方都有效。
我试过设置 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
希望这能解决您的问题, 干杯