Excel输入框VBA错误检查问题

时间:2011-04-06 18:42:40

标签: excel excel-vba vba

以下是我更改的代码。我无法弄清楚VBA对我的生活。如果这是c ++,那么写我需要30秒。我仍然得到错误。

Sub CodeFinder()

    Dim userInput As String
    Dim errorCheck As String

    userInput = InputBox("Please enter the code to search", "Code Search Engine")

    errorCheck = Cells.Find(What:=userInput, _
                       After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, _
                       SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                       MatchCase:=False)

    If errorCheck = False Then
        MsgBox ("Error")
    Else
        Cells.Find(What:=userInput, _
                   After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, _
                   SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
                   False).Activate
    End If 

End Sub

2 个答案:

答案 0 :(得分:3)

如果Cells.Find失败,则返回Nothing。因此,您需要将其分配给变量,并在尝试.Activate之前检查其值。

实际上,如果点击取消,您还应该检查InputBox的返回值。

编辑:仍然包含许多错误。

  1. Cells.Find会返回Range,但您尝试将其分配给String变量。 (另请不要忘记RangeString变量具有不同的赋值语句。)
  2. 然后,您尝试将变量与False进行比较,而不是检查它是否为Nothing
  3. 然后,您需要激活找到的Range,而不是尝试再次找到它。

答案 1 :(得分:1)

Sub CodeFinder()

    Dim userInput As String
    Dim rFound As Range

    userInput = InputBox("Please enter the code to search", "Code Search Engine")

    If Len(userInput) > 0 Then
        Set rFound = ActiveSheet.Cells.Find(What:=userInput, _
                           After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, _
                           SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                           MatchCase:=False)

        If Not rFound Is Nothing Then
            rFound.Select
        Else
            MsgBox "No cells found"
        End If
    End If

End Sub