Поле ввода Excel Ошибка проверки VBA Проблема - PullRequest
0 голосов
/ 06 апреля 2011

Ниже приведен код, который я изменил. Я не могу понять 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 ]

3 голосов
/ 06 апреля 2011

Если Cells.Find не удается, возвращается Nothing. Поэтому вам нужно присвоить его переменной и проверить его значение, прежде чем пытаться .Activate it.

На самом деле вам также следует проверить возвращаемое значение InputBox в случае нажатия кнопки Отмена.

РЕДАКТИРОВАТЬ: по-прежнему содержит ряд ошибок.

  1. Cells.Find возвращает Range, но вы пытаетесь присвоить его переменной String. (Также не забывайте, что переменные Range и String имеют разные операторы присваивания.)
  2. Затем вы пытаетесь сравнить переменную с False вместо проверки того, что она не Nothing.
  3. Затем вам нужно активировать найденный Range, а не пытаться найти его снова.
1 голос
/ 09 апреля 2011
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...