Office中国论坛/Access中国论坛

标题: [求助]如何一次排除列表框的值 [打印本页]

作者: ikon    时间: 2008-12-14 09:42
标题: [求助]如何一次排除列表框的值
[attach]33820[/attach]
如图,按了"组合"和"增加"按钮后,再按"过滤"按钮,不过不是一次将组合结果的值排除出来,要通过几次按"过滤"按钮才可以将所有值排除出来
我的"过滤"按钮代码如下:
Private Sub cmdGL_Click()
Dim numPC, numZH As Long
'lstPC:排除列表
'lstGJZH:组合结果列表
For numPC = 0 To Me.lstPC.ListCount - 1
    For numZH = 0 To Me.lstGJZH.ListCount - 1
        If InStr(1, Me.lstGJZH.ItemData(numZH), Me.lstPC.ItemData(numPC)) > 0 Then
            'Debug.Print "排除第:" & numPC + 1
            'Debug.Print Me.lstPC.ItemData(numPC)
            'Debug.Print "组合第:" & numZH + 1
            'Debug.Print Me.lstGJZH.ItemData(numZH)
            'Debug.Print "位置在:" & InStr(1, Me.lstGJZH.ItemData(numZH), Me.lstPC.ItemData(numPC))
            'Debug.Print "--------"
            Me.lstGJZH.RemoveItem numZH
        End If
    Next numZH
Next numPC
Call StBarXS
End Sub
源文件:
[attach]33821[/attach]

[ 本帖最后由 ikon 于 2008-12-14 09:45 编辑 ]
作者: ikon    时间: 2008-12-14 09:49
本人通过监视
"Me.lstGJZH.ItemData(numZH)"和"InStr(1, Me.lstGJZH.ItemData(numZH), Me.lstPC.ItemData(numPC))"的值,
发现按完一次"过滤"按钮后,"Me.lstGJZH.ItemData(numZH)"和"InStr(1, Me.lstGJZH.ItemData(numZH), Me.lstPC.ItemData(numPC))"的值的值都是null

而"Me.lstPC.ItemData(numPC)) "的值很正常

[ 本帖最后由 ikon 于 2008-12-14 09:50 编辑 ]
作者: Henry D. Sy    时间: 2008-12-14 09:53
http://www.accessbbs.cn/bbs/thread-15410-1-1.html
作者: ikon    时间: 2008-12-29 11:49
经过几经研究,自己解决了,谢谢提示
Private Sub cmdGL_Click()
Dim numPC, numZH  As Long

For numPC = 0 To Me.lstPC.ListCount - 1
    For numZH = 0 To Me.lstGJZH.ListCount
        If InStr(1, Me.lstGJZH.ItemData(numZH), Me.lstPC.ItemData(numPC)) > 0 Then
            Me.lstGJZH.RemoveItem numZH
            numZH = numZH - 1
        End If
    Next
Next

StBarXS




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3