Excel VBA 运行时错误‘13’-类型不匹配 mid()函数使用 报错

问题遇到的现象和发生背景

Excel VBA 运行时错误‘13’-类型不匹配
感谢回答~

问题:希望通过自定义的模糊查找函数,将截取出来的字符串内容对应到详细的enclosure信息上。之后将详细的enclosure信息放入一列

!可以不用我写的码,如果有更简洁快速,可以达到效果的方法都欢迎。

问题相关代码,请勿粘贴截图
'自定义了一个模糊查找的函数
Function enclost(en) As String
'截出来的内容应该是一个长度为三的字符串,前两个是字母,第三个是数字 (i.e. BG2)
' if第一个字母是A-Z中的任意一个,第二个字母是A,第三个数字是0-9中的任意一个 那么 function 返回值是...
If en = "[A-Z]{1}A[0-9]{1}" Then
    enclost = "NEMA 12 Industrial Use"
'if第一个字母是A-Z中的任意一个,第二个字母是O,第三个数字是0-9中的任意一个 那么 function 返回值是...
ElseIf en = "[A-Z]{1}O[0-9]{1}" Then
    enclost = "Open"
'if第一个字母是A-Z中的任意一个,第二个字母是F,第三个数字是0-9中的任意一个 那么 function 返回值是...
ElseIf en = "[A-Z]{1}F[0-9]{1}" Then
    enclost = "NEMA 1 Flush Mounting General Purpose"
'if第一个字母是A-Z中的任意一个,第二个字母是G,第三个数字是0-9中的任意一个 那么 function 返回值是...
ElseIf en = "[A-Z]{1}G[0-9]{1}" Then
    enclost = "NEMA 1 General Purpose Surface Mounting"
'if第一个字母是A-Z中的任意一个,第二个字母是H,第三个数字是0-9中的任意一个 那么 function 返回值是...
ElseIf en = "[A-Z]{1}H[0-9]{1}" Then
    enclost = "NEMA 3R Rainproof"
'if第一个字母是A-Z中的任意一个,第二个字母是R,第三个数字是0-9中的任意一个 那么 function 返回值是...
ElseIf en = "[A-Z]{1}R[0-9]{1}" Then
    enclost = "NEMA 7&9 Spin Top"
'if第一个字母是A-Z中的任意一个,第二个字母是T,第三个数字是0-9中的任意一个 那么 function 返回值是...
ElseIf en = "[A-Z]{1}T[0-9]{1}" Then
    enclost = "NEMA 7&9 Bolted"
'if(第一个字母是H or J,第二个字母是W,第三个数字是2) 或者 第一个字母非H or J,第二个字母是W,第三个数字是1 那么 function 返回值是... 
ElseIf en = "[H,J]W2" Or "^[H,J]W1" Then
    enclost = "NEMA 4/4X Stainless"
'if第一个字母是A-Z中的任意一个,第二个字母是W,第三个数字是2 那么 function 返回值是...
ElseIf en = "[A-Z]{1}W2" Then
    enclost = "NEMA 4/4X Poly"
Else
    enclost = ""
End If

End Function

Sub enclose()
For i = 2 To Range("a1048576").End(xlUp).Row
    'AB 列的数据是类似于(SAG12, SCW2) 的样子,放入上面自定义函数中的字符串只需要从第二位开始数后面的三位(对应例子应截取的部分:AG1,CW2)
    '下一行是调试中出现问题,报错的位置
    Set part = Mid(Range("AB" & i).Value, 2, 3)
    '将自定义函数返回的结果放入E列
    Range("E" & i).Value = enclost(part)
Next
End Sub
运行结果及报错内容

无法返回运行结果
报错内容:运行时错误‘13’-类型不匹配。调试后发现问题出现在 Set part = Mid(Range("AB" & i).Value, 2, 3) 这一行

Range("AB" & i).Value
这个文本框内容是什么,你把它改成数值类型,或者转换成数值类型