以下是我更改的代码。我无法弄清楚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
答案 0 :(得分:3)
如果Cells.Find
失败,则返回Nothing
。因此,您需要将其分配给变量,并在尝试.Activate
之前检查其值。
实际上,如果点击取消,您还应该检查InputBox
的返回值。
编辑:仍然包含许多错误。
Cells.Find
会返回Range
,但您尝试将其分配给String
变量。 (另请不要忘记Range
和String
变量具有不同的赋值语句。)False
进行比较,而不是检查它是否为Nothing
。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