您好我有一个代码而我没有做任何更改,但我得到了Type mismatch error
。它以前工作得很好。
代码:
Private Sub UserForm_Initialize()
Dim r As Integer
Dim c As Integer
Me.ComboBox1.RowSource = "Intro!A3:A" & Range("A" & Rows.Count).End(xlUp).Row
r = Application.Match("c", Columns(1), 0)
c = Application.Match("cc", Rows(1), 0)
TextBox1.Value = Cells(r, c).Value
TextBox2.Value = Cells(r, c + 1).Value
TextBox3.Value = Cells(r, c + 2).Value
TextBox4.Value = Cells(r, c + 3).Value
End Sub
到达此处时,通过代码发现错误使用f8
:
c = Application.Match("cc", Rows(1), 0)
此行的目标是在第一行中找到匹配
答案 0 :(得分:2)
使用Match
时,应始终为Match
无法找到您要查找的值(或字符串)的方案准备代码。
您可以使用以下方式执行此操作:
If Not IsError(Application.Match("cc", Columns(1), 0)) Then
修改后的代码
Dim r As Variant
Dim c As Variant
Me.ComboBox1.RowSource = "Intro!A3:A" & Range("A" & Rows.Count).End(xlUp).Row
If Not IsError(Application.Match("c", Columns(1), 0)) Then
r = Application.Match("c", Columns(1), 0)
Else
' in case "c" is not found
MsgBox "critical error finding 'c'"
End If
If Not IsError(Application.Match("cc", Columns(1), 0)) Then
c = Application.Match("cc", Columns(1), 0)
Else
' in case "cc" is not found
MsgBox "critical error finding 'cc'"
End If
答案 1 :(得分:1)
我认为没有' cc'在第一排。在这种情况下,Application.Match
返回一个无法分配给整数的Error对象。