繁体   English   中英

Excel输入框VBA错误检查问题

[英]Excel Input Box VBA Error Checking Problem

下面是我更改的代码。 我无法终生了解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

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

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

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

  1. Cells.Find返回一个Range ,但是您正在尝试将其分配给String变量。 (也不要忘记RangeString变量具有不同的赋值语句。)
  2. 然后,您尝试将变量与False进行比较,而不是检查其是否为Nothing
  3. 然后,您需要激活找到的Range而不是尝试再次找到它。
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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM