1,217
社区成员




'*************************************************************************
'**模 块 名:ModGetPY
'**说 明:取汉字拼音首字母,改良自网上某版本
'**创 建 人:嗷嗷叫的老马
'**日 期:2008年3月17日
'**备 注: 紫水晶工作室 版权所有
'**版 本:V1.0
'*************************************************************************
Public Function GetPYChar(ByVal sChar As String) As String
'返回第一个汉字拼音首字母
'sChar - 转入的汉字
'返回值:
' 成功返回第一个字的拼音首字母
' 失败返回原字符串
Dim lChar As Long
lChar = 65536 + Asc(sChar)
Select Case lChar
Case 45217 To 45252
GetPYChar = "A"
Case 45253 To 45760
GetPYChar = "B"
Case 45761 To 46317
GetPYChar = "C"
Case 46318 To 46825
GetPYChar = "D"
Case 46826 To 47009
GetPYChar = "E"
Case 47010 To 47296
GetPYChar = "F"
Case 47297 To 47613
GetPYChar = "G"
Case 47614 To 48118
GetPYChar = "H"
Case 48119 To 49061
GetPYChar = "J"
Case 49062 To 49323
GetPYChar = "K"
Case 49324 To 49895
GetPYChar = "L"
Case 49896 To 50370
GetPYChar = "M"
Case 50371 To 50613
GetPYChar = "N"
Case 50614 To 50621
GetPYChar = "O"
Case 50622 To 50905
GetPYChar = "P"
Case 50906 To 51386
GetPYChar = "Q"
Case 51387 To 51445
GetPYChar = "R"
Case 51446 To 52217
GetPYChar = "S"
Case 52218 To 52697
GetPYChar = "T"
Case 52698 To 52979
GetPYChar = "W"
Case 52980 To 53640
GetPYChar = "X"
Case 53689 To 54480
GetPYChar = "Y"
Case 54481 To 55289
GetPYChar = "Z"
Case Else
GetPYChar = sChar
End Select
End Function
Public Function GetPY(ByVal InString As String, Optional ByVal MaxLen As Variant) As String
'转换一个字符串内所有汉字为拼音首字母
'InString - 输入的汉字字符串
'MaxLen - 返回的字符最大长度
'返回值:
' 所有汉字的拼音首字母.
'备注:
' 仅处理汉字,非汉字原样返回.
' 如果转换后的字符串长度大于MaxLen,那么从左起取MaxLen-1个字符加上最后一个字符作为返回值.
Dim I As Long
For I = 0 To Len(InString) - 1
GetPY = GetPY & GetPYChar(Mid(InString, I + 1, 1))
Next
If IsMissing(MaxLen) = False Then
If Len(GetPY) > MaxLen Then
GetPY = Mid(GetPY, 1, MaxLen - 1) & Right(GetPY, 1)
End If
End If
End Function