设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 22114|回复: 111
打印 上一主题 下一主题

[模块/函数] 支持拼音首字母的组合框函数及实例

[复制链接]
跳转到指定楼层
1#
发表于 2005-1-19 21:31:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ublic Function ComboBoxKeyPress(KeyAscii As Integer) As String

'调用方法  在组合框的keypress方法中加入:

'--------------------------------------------

'    If ComboBoxKeyPress(KeyAscii) <> "" Then KeyAscii = 0

'--------------------------------------------

On Error GoTo Err

Dim i As Integer

With Screen.ActiveControl

    If .ControlType = acComboBox And (KeyAscii >= Asc("a") And KeyAscii <= Asc("z")) Then

    '只能由组合框输入小写字母时调用

        ComboBoxKeyPress = Nz(HZPY(Left(.Text, .SelStart))) & Chr(KeyAscii)

        While HZPY(Left(.ItemData(i), .SelStart + 1)) <> ComboBoxKeyPress And i < .ListCount - 1

            i = i + 1

        Wend

        If i <> .ListCount And Mid(.ItemData(i), .SelStart + 1, 1) <> Chr(KeyAscii) Then

            ComboBoxKeyPress = Left(.ItemData(i), .SelStart + 1)

            .Value = Null

            SendKeys ComboBoxKeyPress

        Else

            ComboBoxKeyPress = ""      '为英文时不代换,否则会进入死循环

        End If

    End If

End With

Exit Function

Err:

    ComboBoxKeyPress = ""

End Function

Function HZPY(hzstr As String) As String

Dim p0 As String, C As String, str As String

Dim i As Integer, j As Integer

p0 = "吖八嚓咑妸发旮铪讥讥咔垃呣拿讴趴七呥仨他哇哇哇夕丫匝咗"

For i = 1 To Len(hzstr)

    C = "z"

    str = Mid(hzstr, i, 1)

    If Asc(str) > 0 Then

        C = str

    Else

        For j = 1 To 26

            If Mid(p0, j, 1) > str Then

                C = Chr(95 + j)

                Exit For

            End If

        Next

    End If

    HZPY = HZPY + C

Next

End Function

下面是一个范例:

游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享分享 分享淘帖 订阅订阅
2#
发表于 2005-1-21 00:35:00 | 只看该作者
感谢。经典之作。

点击这里给我发消息

3#
发表于 2005-1-21 02:19:00 | 只看该作者
只有一句:出手必是精品:)
4#
发表于 2005-3-30 13:43:00 | 只看该作者
我用的时候总是出现 缺少 “end sub ” 我加上都没有用啊[em06][em06]
5#
发表于 2005-3-30 15:16:00 | 只看该作者
确实经典
6#
发表于 2005-3-30 18:19:00 | 只看该作者
以下是引用tmtony在2005-1-20 18:18:54的发言:

只有一句:出手必是精品:)
7#
发表于 2005-3-31 01:39:00 | 只看该作者
呵呵 请问老兄 我把上述代码直接加到Private Sub 申请人员id_KeyDown(KeyCode As Integer, Shift As Integer)(代码)End Sub但是 添加后 end sub 就自动消失 然后运行的时候提示缺少“end sub”我加上都没有用 请问是什么原因啊?[em04][em04][em04]
8#
发表于 2005-4-3 20:48:00 | 只看该作者
能不能指教一下啊 斑竹大人~~~[em06][em06][em06]
9#
发表于 2005-4-3 23:38:00 | 只看该作者
值得收藏
10#
发表于 2005-4-5 19:33:00 | 只看该作者
不錯不錯
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-10 07:36 , Processed in 0.082189 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表