由于宏的Excel应用程序崩溃

时间:2016-02-23 14:43:13

标签: excel vba excel-vba

在启动我的宏期间,Excel应用程序崩溃了。如果我用整数测试宏,程序运行正常(partnumber = 123)。如果我用字符串检查应用程序崩溃了。因此,对我来说,没有错误代码可见。我假设存在类型不匹配(但我为partnumber设置了Variant)

Sub SbIsInCOPexport()
Dim lastRow As Long
Dim i As Long
Dim found As Boolean
Dim partnumber As Variant
i = 1
found = False

partnumber = ActiveCell.Value
Windows("COPexport.xlsx").Activate
lastRow = Sheets(1).Cells.SpecialCells(xlLastCell).Row

Do While i < lastRow + 1
    If Cells(i, 6).Value = partnumber Then
        found = True
        Exit Do
    End If
    i = i + 1
Loop

If found = True Then
    Cells(i, 6).Select
    MsgBox ("Searched part number: " & Str(partnumber) & vbNewLine & "Found part number: " _
    & ActiveCell.Value & vbNewLine & "Address: " & Cells(i, 6).Address & vbNewLine & vbNewLine & "Test Order: " & _
    Cells(i, 2).Value)
    Windows("COPexport.xlsx").Activate
Else
    MsgBox "Part number is not found in the COP samples!"
    Windows("COPexport.xlsx").Activate
End If
End Sub

可能是根本原因?

1 个答案:

答案 0 :(得分:1)

我没有看到任何明显的问题,但请考虑使用范围对象的.Find方法,如下所示:

Sub SbIsInCOPexport()
    Dim partnumber as Variant
    Dim rng as Range

    Windows("COPexport.xlsx").Activate
    partnumber = ActiveCell.Value
    Set rng = Columns(6).Find(partnumber)  '## Search in column 6 for partnumber

    If rng Is Nothing Then
        MsgBox "Part number is not found in the COP samples!"
        Windows("COPexport.xlsx").Activate
    Else
        With rng
            MsgBox ("Searched part number: " & Str(partnumber) & vbNewLine &  _
                    "Found part number: " & .Value & vbNewLine & _
                    "Address: " & .Address & vbNewLine & vbNewLine & _
                    "Test Order: " & .Offset(0,-4).Value)  '## Get the value from column 2
        End With
    End If
End Sub