[英]User-created VBA function returns #VALUE
我正處於創建 vba 函數的早期階段,該函數將從單元格中提取電子郵件地址,然后對唯一 ID 進行 vlookup。
我將在其上使用該函數的單元格說明如下:
“此消息由 SOB 於 7 月 31 日發送至 email@email.com”或“消息由 SOB 7/31 發送至 email@email.com”
我想做的第一件事是擦除電子郵件地址之后的任何內容。 為此,該函數將搜索“by SOB on July 31st”或“by SOB 7/31”並將其替換為空。
我編寫了以下代碼來嘗試完成此操作,但在工作簿中使用它時收到一條錯誤消息:
Function ExtractEmail(extractStr As String) As String
Dim DateText As String
Dim DateNum As String
DateText = "by SOB on July 31st"
DateNum = "by SOB 7/31"
If InStr(extractStr, DateText ) Then
Left(extractStr, InStr(extractStr, DateText )) = extractStr
ElseIf InStr(extractStr, DateNum ) Then
Left(extractStr, InStr(extractStr, DateNum )) = extractStr
Else
extractStr = "Nothing Found"
End If
End Function
所以這:
此郵件於 7 月 31 日由 SOB 發送至 email@email.com
應該返回:
此消息已發送至 email@email.com
知道為什么我會收到錯誤#Value!?
謝謝你的幫助!
您正在以錯誤的方式分配事物,並且您需要使用 UDF 的名稱從函數中實際返回一個值。 我認為這就是你所追求的:
Function ExtractEmail(extractStr As String) As String
Dim DateText As String
Dim DateNum As String
DateText = "by SOB on July 31st"
DateNum = "by SOB 7/31"
If InStr(extractStr, DateText ) Then
extractStr = Left(extractStr, InStr(extractStr, DateText ))
ElseIf InStr(extractStr, DateNum ) Then
extractStr = Left(extractStr, InStr(extractStr, DateNum ))
Else
extractStr = "Nothing Found"
End If
ExtractEmail = extractStr
End Function
如果您只想刪除“ by SOB ”之后的任何內容,那么:
Function ExtractEmail(extractStr As String) As String
ExtractEmail = Split(extractStr, " by SOB ")(0)
End Function
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.