Как проверить строку, введенную в поле ввода, по диапазону Excel, который содержит эту строку? - PullRequest
0 голосов
/ 08 февраля 2019

Пожалуйста, извините меня за этот вопрос, так как я новичок.Я пытаюсь ввести строку в поле ввода VBA, взять эту строку и проверить соответствие диапазону, содержащему список строк в листе Excel («Роли»).Если строка присутствует в диапазоне, я хотел бы отобразить значение в следующем столбце с помощью Vlookup и отобразить его в окне сообщения.В противном случае я хотел бы иметь msgbox, отображающий «строка не существует».У меня есть код ниже, который я не могу заставить его работать.Когда я выполняю код, я получаю ошибку несоответствия типов. Высоко ценю вашу помощь!

Option Explicit

Sub GetRoles()
    Dim Name As String
    Dim Role As String

    Name = InputBox("Enter a Name")
    Sheets("Roles").Activate

    If Range("name_list").Value = Name Then
        Role = WorksheetFunction.VLookup(Name, Range("name_list"), 2, False)
        MsgBox Name & " is a " & Role
    Else
        MsgBox Name & " does not exist"
    End If
End Sub

1 Ответ

0 голосов
/ 08 февраля 2019

Ваша проблема в том, что в этой строке

If Range("name_list").Value = Name Then

вы пытаетесь проверить наличие значения в диапазоне нескольких ячеек, и вы не можете сделать это, не обходя цикл через каждую ячейкуили другой подход.

Это один из таких подходов, использующий метод Find.

Sub GetRoles()

Dim Name As String
Dim Role As String
Dim r As Range

Name = InputBox("Enter a Name")
If Name = vbNullString Then Exit Sub

Sheets("Roles").Activate
Set r = Range("name_list").Find(What:=Name, LookAt:=xlWhole, MatchCase:=False, SearchFormat:=False)
If r Is Nothing Then
    MsgBox Name & " does not exist"
Else
    MsgBox Name & " is a " & r.Offset(, 2).Value
End If

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...