得到汉字的拼音首字母


Public Function GetPYHeadZm(p As String) As String
'得到汉字的拼音首字母

dim i
    i = Asc(p)
    Select Case i
    Case -20319 To -20284: GetPYHeadZm = "A"
    Case -20283 To -19776: GetPYHeadZm = "B"
    Case -19775 To -19219: GetPYHeadZm = "C"
    Case -19218 To -18711: GetPYHeadZm = "D"
    Case -18710 To -18527: GetPYHeadZm = "E"
    Case -18526 To -18240: GetPYHeadZm = "F"
    Case -18239 To -17923: GetPYHeadZm = "G"
    Case -17922 To -17418: GetPYHeadZm = "H"
    Case -17417 To -16475: GetPYHeadZm = "J"
    Case -16474 To -16213: GetPYHeadZm = "K"
    Case -16212 To -15641: GetPYHeadZm = "L"
    Case -15640 To -15166: GetPYHeadZm = "M"
    Case -15165 To -14923: GetPYHeadZm = "N"
    Case -14922 To -14915: GetPYHeadZm = "O"
    Case -14914 To -14631: GetPYHeadZm = "P"
    Case -14630 To -14150: GetPYHeadZm = "Q"
    Case -14149 To -14091: GetPYHeadZm = "R"
    Case -14090 To -13319: GetPYHeadZm = "S"
    Case -13318 To -12839: GetPYHeadZm = "T"
    Case -12838 To -12557: GetPYHeadZm = "W"
    Case -12556 To -11848: GetPYHeadZm = "X"
    Case -11847 To -11056: GetPYHeadZm = "Y"
    Case -11055 To -10254: GetPYHeadZm = "Z"
    Case Else
        GetPYHeadZm = UCase(p)
    End Select
End Function

 

Private Sub Text1_Change()
Dim TempLen As Integer
Dim TempPyStr As String
Dim i As Long
Dim N As Integer
Dim TempZm As String
TempLen = Len(Text1.Text)
List1.Clear
For i = 0 To Combo1.ListCount - 1
    For N = 1 To TempLen
        If Len(Combo1.List(i)) >= N Then TempPyStr = TempPyStr & GetPYHeadZm(Mid(Combo1.List(i), N, 1))
    Next
    If UCase(Text1.Text) = TempPyStr Then
        List1.AddItem Combo1.List(i)
    End If
    TempPyStr = ""
Next
 
End Sub