在没有任何VBA代码修改的情况下获取类型不匹配错误

时间:2018-03-20 06:08:26

标签: excel vba excel-vba

您好我有一个代码而我没有做任何更改,但我得到了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)

此行的目标是在第一行中找到匹配

2 个答案:

答案 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对象。