设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[模块/函数] 可重复多选的组合框

[复制链接]
跳转到指定楼层
1#
发表于 2008-6-6 16:14:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
游客,如果您要查看本帖隐藏内容请回复


通过以下代码(插入组合框的更新后事件中),可以实现用组合框重复多选,也可以手工修改录入内容:
Private Sub Combo0_AfterUpdate()
Dim i As Integer, strList As String
    With Combo0
        For i = 1 To .ListCount
            strList = IIf(Nz(strList) = "", "", strList & ";") & .ItemData(i)
        Next
        If Nz(.Text) <> "" Then
            If InStr(1, .Tag, .Text) = 0 And InStr(1, strList, .Text) > 0 Then
                .Value = IIf(Nz(.Tag) = "", "", .Tag & "、") & .Text
            End If
            .Tag = .Text
        Else
            .Tag = ""
        End If
    End With
End Sub

本帖子中包含更多资源

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

x

评分

参与人数 1经验 +5 收起 理由
wang1950317 + 5

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
推荐
发表于 2008-6-7 01:02:51 | 只看该作者
太有创意了,学习
回复 支持 1 反对 0

使用道具 举报

点击这里给我发消息

3#
发表于 2008-6-6 16:18:22 | 只看该作者
非常巧妙,学习了[:50]
4#
 楼主| 发表于 2008-6-6 16:19:28 | 只看该作者
经测试,可以省掉其中4行:
Private Sub Combo0_AfterUpdate()
Dim i As Integer, strList As String
    With Combo0
        For i = 1 To .ListCount
            strList = IIf(Nz(strList) = "", "", strList & ";") & .ItemData(i)
        Next
        If InStr(1, .Tag, .Text) = 0 And InStr(1, strList, .Text) > 0 Then
            .Value = IIf(Nz(.Tag) = "", "", .Tag & "、") & .Text
        End If
        .Tag = .Text
    End With
End Sub

评分

参与人数 2经验 +15 收起 理由
tmtony + 10
5988143 + 5 精品文章

查看全部评分

5#
发表于 2008-6-6 17:09:17 | 只看该作者
好东西[:50]
6#
发表于 2008-6-6 20:36:37 | 只看该作者
trynew站长,很久不见,终于又尝试新的了[:34]
7#
发表于 2008-6-6 21:36:16 | 只看该作者
精品不断![:50]

点击这里给我发消息

8#
发表于 2008-6-7 01:44:42 | 只看该作者
不服不行!!
9#
 楼主| 发表于 2008-6-7 02:06:30 | 只看该作者
进一步,可以把此功能做成通用函数,在公共模块中建立函数:

Public Function MultComb()
Dim i As Integer, strList As String
    With Screen.ActiveControl
        For i = 1 To .ListCount
            strList = IIf(Nz(strList) = "", "", strList & ";") & .ItemData(i)
        Next
        If InStr(1, .Tag, .Text) = 0 And InStr(1, strList, .Text) > 0 Then
            .Value = IIf(Nz(.Tag) = "", "", .Tag & "、") & .Text
        End If
        .Tag = .Text
    End With
End Function

然后在窗体的组合框更新后事件中输入函数:=MultComb()
现在你的组合框就是有多选功能的“超级”组合框了。

点击这里给我发消息

10#
发表于 2008-6-7 11:11:40 | 只看该作者
真好啊!提一个小问题:当我们不幸又误选了已经选过的条目,其他选中的消逝了,只保留了最后选中的。能否在误点击了已选项没有反应就好了。谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-10 11:53 , Processed in 0.110350 second(s), 37 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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