首页 > 解决方案 > 如何根据包含该字符串的 excel 范围验证在输入框中输入的字符串?

问题描述

请原谅我这个问题,因为我是新手。我正在尝试在 VBA 输入框中输入一个字符串并获取该字符串并针对包含 Excel 工作表(“角色”)中的字符串列表的范围进行验证。如果该字符串存在于该范围内,那么我想使用 Vlookup 在下一列中显示该值并将其显示在一个 msg 框中。否则我想要一个显示“字符串不存在”的消息框。我有下面的代码,我无法让它工作。当我执行代码时,出现类型不匹配错误非常感谢您的帮助!

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

标签: excelvba

解决方案


你的问题是在这一行

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

推荐阅读