Ваша проблема в том, что в этой строке
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