Попробуйте этот код в новой книге Excel:
Sub TestMe()
WriteData
Dim email As String
Dim name As String: name = "Mike" 'Application.UserName
email = WorksheetFunction.VLookup(name, Worksheets(1).Range("K:N"), 4, False)
MsgBox email
End Sub
Sub WriteData()
With Worksheets(1)
.Range("K1") = "Mike"
.Range("K2") = "Mike2"
.Range("N1") = "Mike@add.ress"
.Range("N2") = "Mike2@add.ress"
End With
End Sub
Обычно он ищет значение «Mike» в столбце «K» и возвращает значение в столбце «N» соответствующей строки.
Если есть возможная ошибка, поэтому VlookUp()
не находит правильное значение, тогда возможны следующие две опции:
Dim email As Variant
Он вернет номер ошибки в MsgBox()
, если ошибка существует.Причина в том, что Variant
может принимать значение ошибки само по себе, а строка не может.
Использовать IfError
и перехватывать ошибку соответственно.В приведенном ниже примере возвращается «Нет», а затем переменная name
:
Sub TestMe()
WriteData
Dim email As String
Dim name As String: name = "Mike" 'Application.UserName
With Application
email = .WorksheetFunction.IfError(.VLookup(name, _
Worksheets(1).Range("K:N"), 4, False), "No " & name)
End With
MsgBox email
End Sub