我创建了一个用户表单,在那里我放置了一个列表框和2个文本框。
现在我的查询是当我选择一个项目,然后项目中的一些字符要显示在两个文本框中,当我尝试这样做时,我得到一个错误消息,类型不匹配请更正我
Option Explicit
Dim a() As String
Dim b() As String
Dim i As Long
Private Sub ListBox1_Click()
a = Split("meter, inch, foot, yard", ",")
b = Split("m, In, Ft, Yd", ",")
For i = 1 To ListBox1.ListCount
If ListBox1.Value(i, 0) = a(i) Then
TextBox1.Value(i, 0) = b(i) And TextBox2.Value(i, 0) = b(i)
End If
Next
End Sub
Sub UserForm_Initialize()
a = Split("meter, inch, foot, yard", ",")
ListBox1.List = a
End Sub
感谢你
答案 0 :(得分:0)
我不确定你想要完成什么,但你可以尝试以下内容。只需将ListBox中的MouseClick或SelectedIndexChanged事件添加到ListBox1_Click即可。我更喜欢第二个。并将表单的onFormLoad添加到ListBox1_Click。如果您将我的代码片段插入到空项目中,您可以检查它是否按照您希望的方式工作。
Sry但是有点难以预测你想要完成什么(:
无论如何,使用数据绑定仍有更清洁的解决方案。如果你感兴趣,请告诉我。但是我想说数据绑定更复杂。
这是代码
Public Class Form1
Dim a() As String = Split("meter, inch, foot, yard", ",")
Dim b() As String = Split("m, In, Ft, Yd", ",")
Private Sub ListBox1_Click(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseClick
If ListBox1.SelectedIndex < 0 Then
TextBox1.Text = String.Empty
TextBox2.Text = String.Empty
Else
TextBox1.Text = a(ListBox1.SelectedIndex)
TextBox2.Text = b(ListBox1.SelectedIndex)
End If
End Sub
Private Sub onFormLoad(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
ListBox1.Items.AddRange(a)
End Sub
End Class