向文本框添加数据时,VBA中出现类型不匹配错误
我有一个向文本框添加数据时,VBA中出现类型不匹配错误,vba,excel,Vba,Excel,我有一个文本框和一个列表框,其中包含从Excel文件填充的各个城市的列表 现在每个城市都有两种选择之一:要么在境内,要么在境外。我希望该选项显示在文本框中 我试过这样的方法: Private Sub CommandButton1_Click() TextBox2.Value = Application.VLookup(Me.ListBox1.Text,Sheets("Sheet1").Range("B:C"), 2, False) End Sub 但我的错误是: 运行时错误21473525
文本框
和一个列表框
,其中包含从Excel文件填充的各个城市的列表
现在每个城市都有两种选择之一:要么在境内,要么在境外。我希望该选项显示在文本框中
我试过这样的方法:
Private Sub CommandButton1_Click()
TextBox2.Value = Application.VLookup(Me.ListBox1.Text,Sheets("Sheet1").Range("B:C"), 2, False)
End Sub
但我的错误是:
运行时错误2147352571(80020005)。无法设置值属性。类型不匹配
我的excel文件如下所示:
Private Sub CommandButton1_Click()
TextBox2.Value = Application.VLookup(Me.ListBox1.Text,Sheets("Sheet1").Range("B:C"), 2, False)
End Sub
假设您的数据存储在
表1
中。您想将这些数据绑定到UserForm
上的ListBox1
。我建议使用自定义函数加载数据,而不是通过使用RowSource
属性绑定数据。在这种情况下,我建议使用,以避免重复
见:
注意:代码是直接从头部编写的,因此可能包含错误 问题可能是您没有检查对Application.VLookup的调用是否成功。大多数返回的值都可以成功地转换为字符串,但有一个重要的例外:如果VLookup返回错误,例如,它找不到Me.ListBox1.Text,则无法转换直接返回的变量 这应表明:
Private Sub ReturnsOfVLookup()
Dim works As Variant, doesnt As String
works = Application.VLookup("Something not found", _
Sheets("Sheet1").Range("B:C"), 2, False)
Debug.Print works
On Error Resume Next
doesnt = Application.VLookup("Something not found", _
Sheets("Sheet1").Range("B:C"), 2, False)
If Err.Number <> 0 Then
Debug.Print Err.Description
Else
Debug.Print doesnt 'We won't be going here... ;-)
End If
End Sub
Private Sub ReturnsOfVLookup()
Dim用作变量,而不是字符串
works=Application.VLookup(“找不到的东西”_
表(表1)。范围(表2,假)
调试。打印作品
出错时继续下一步
doesnt=Application.VLookup(“未找到的东西”_
表(表1)。范围(表2,假)
如果错误号为0,则
调试.打印错误说明
其他的
调试。打印不会“我们不会在这里…”;-)
如果结束
端接头
列表框是否放置在UserForm上?如何将数据加载到其中?@MaciejLos Yes它被放置在Userform上,我通过将其Rowsource设置为excel文件中的名称来加载。Listbox是否显示整个范围(名称、城市、地区)?如果Application.VLookup
未找到查找值,它将返回\N/A
错误TextBox2.Value
不能成为错误值。@MaciejLos否。它只有city-@MaciejLos——如果不知道代码是否有效,为什么要提供代码?在提供答案之前,你是否先测试过它?@DaveExcel,没有,我还没有测试过。我几乎可以肯定它也一定会起作用。
Private Sub ReturnsOfVLookup()
Dim works As Variant, doesnt As String
works = Application.VLookup("Something not found", _
Sheets("Sheet1").Range("B:C"), 2, False)
Debug.Print works
On Error Resume Next
doesnt = Application.VLookup("Something not found", _
Sheets("Sheet1").Range("B:C"), 2, False)
If Err.Number <> 0 Then
Debug.Print Err.Description
Else
Debug.Print doesnt 'We won't be going here... ;-)
End If
End Sub