VBA 贴片电阻名称转换
最近工作中遇到需要将SMT电阻厂家的品名转换成 常用SMD电阻的规格,收集了几家公司的命名规则,写了个函数,大家参考。目前只写入了 大毅(TA-I) ,ROHM,也可以自己增加平常使用品牌电阻进行转换。
Public Function ResistorCode(ResistorName As String) As String
Dim FrontChar As String
Dim Size As String
Dim R As String
Dim Grade As String
Dim RL As Integer
FrontChar = Left(ResistorName, 2)
If FrontChar = “MC” Then FrontChar = “MCR”
Select Case FrontChar
Case “RM” '大毅电阻(TA-I)
Grade = Mid(ResistorName, 5, 1)
Size = Mid(ResistorName, 3, 2)
Select Case Size
Case “02”
Size = “0603”
Case “04”
Size = “1005”
Case “06”
Size = “1608”
Case “10”
Size = “2012”
Case “12”
Size = “3216”
Case “13”
Size = “3226”
Case “20”
Size = “5025”
Case “25”
Size = “6432”
End Select
Select Case Mid(ResistorName, 5, 1)
Case "J", "G"
temp = Right(ResistorName, 3)
If Not temp Like "*R*" Then
temp = Left(temp, 2) * 10 ^ Right(temp, 1)
Select Case temp
Case 0 To 999
Case 999 To 10 ^ 6 - 1
temp = temp / 1000 & "K"
Case Else
temp = temp / 10 ^ 6 & "M"
End Select
Else
If Right(temp, 1) <> 0 Then
temp = Left(temp, 1) & "." & Right(temp, 1)
Else
temp = Left(temp, 1)
End If
End If
Case "F", "D", "B"
temp = Right(ResistorName, 4)
If Not temp Like "*R*" Then
temp = Left(temp, 3) * 10 ^ Right(temp, 1)
Select Case temp
Case 0 To 999
Case 999 To 10 ^ 6 - 1
temp = temp / 1000 & "K"
Case Else
temp = temp / 10 ^ 6 & "M"
End Select
Else
If Right(temp, 1) <> 0 Then
temp = Left(temp, 2) & "." & Right(temp, 1)
Else
temp = Left(temp, 2)
End If
End If
End Select
Case "MCR" 'ROHM 电阻(TA-I)
FrontChar = Left(ResistorName, 6)
Select Case FrontChar
Case "MCR004"
Size = "0402"
Grade = Mid(ResistorName, 10, 1)
Case "MCR006"
Size = "0606"
Grade = Mid(ResistorName, 10, 1)
Case "MCR100"
Size = "6432"
Grade = Mid(ResistorName, 10, 1)
Case "MCR01M"
Size = "1005"
Grade = Mid(ResistorName, 9, 1)
Case "MCR03E"
Size = "1608"
Grade = Mid(ResistorName, 9, 1)
Case "MCR10E"
Size = "2012"
Grade = Mid(ResistorName, 9, 1)
Case "MCR18E"
Size = "3216"
Grade = Mid(ResistorName, 9, 1)
Case "MCR25J"
Size = "3225"
Grade = Mid(ResistorName, 9, 1)
Case "MCR50J"
Size = "5025"
Grade = Mid(ResistorName, 9, 1)
End Select
Select Case Grade
Case "D", "F"
temp = Right(ResistorName, 4)
If Not temp Like "*R*" Then
temp = Left(temp, 3) * 10 ^ Right(temp, 1)
Select Case temp
Case 0 To 999
Case 999 To 10 ^ 6 - 1
temp = temp / 1000 & "K"
Case Else
temp = temp / 10 ^ 6 & "M"
End Select
Else
If Right(temp, 1) <> 0 Then
temp = Left(temp, 2) & "." & Right(temp, 1)
Else
temp = Left(temp, 2)
End If
End If
Case "J"
temp = Right(ResistorName, 3)
If Not temp Like "*R*" Then
temp = Left(temp, 2) * 10 ^ Right(temp, 1)
Select Case temp
Case 0 To 1000
Case 1000 To 10 ^ 6 - 1
temp = temp / 1000 & "K"
Case Else
temp = temp / 10 ^ 6 & "M"
End Select
Else
If Right(temp, 1) <> 0 Then
temp = Left(temp, 1) & "." & Right(temp, 1)
Else
temp = Left(temp, 1)
End If
End If
End Select
Case "RC" '国巨 电阻(TA-I) 阻值编码固定,无法直接取值,只显示电阻尺寸及等级
FrontChar = Left(ResistorName, 6)
Select Case FrontChar
Case "RC0075"
Size = "0302"
Grade = Mid(ResistorName, 7, 1)
Case "RC0100"
Size = "0402"
Grade = Mid(ResistorName, 7, 1)
Case "RC0201"
Size = "0603"
Grade = Mid(ResistorName, 7, 1)
Case "RC0402"
Size = "1005"
Grade = Mid(ResistorName, 7, 1)
Case "RC0603"
Size = "1608"
Grade = Mid(ResistorName, 7, 1)
Case "RC0805"
Size = "2012"
Grade = Mid(ResistorName, 7, 1)
Case "RC1206"
Size = "3216"
Grade = Mid(ResistorName, 7, 1)
Case "RC1210"
Size = "3226"
Grade = Mid(ResistorName, 7, 1)
Case "RC1218"
Size = "3246"
Grade = Mid(ResistorName, 7, 1)
Case "RC2010"
Size = "5025"
Grade = Mid(ResistorName, 7, 1)
Case "RC2512"
Size = "6432"
Grade = Mid(ResistorName, 7, 1)
End Select
End Select
ResistorCode = Size & Grade & temp
End Function