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