请问这个问题,因为我是新手。我正在尝试在VBA输入框中输入一个字符串,并采用该字符串并针对包含Excel工作表(“ Roles”)中的字符串列表的范围进行验证。如果该字符串存在于该范围内,那么我想使用Vlookup在下一列中显示该值,并将其显示在msg框中。否则,我想让一个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
答案 0 :(得分:0)
您的问题是这一行
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