| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 464 人关注过本帖
标题:[求助] 新手求助 循环问题 请朋友们帮忙 谢谢大家了
只看楼主 加入收藏
xy_fdgg
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2011-3-8
结帖率:90%
收藏
已结贴  问题点数:20 回复次数:4 
[求助] 新手求助 循环问题 请朋友们帮忙 谢谢大家了
刚开始学vb 自己对彩票3D 比较感兴趣 想自己做个3D随水工具 作到这一步 怎么都不会了 下面这段代码
只能一次选中一个chk 然后执行 在取消选中 再选下一个 再执行 再取消选中 这样重复的选 才不会出错 要是同时选中的话 就出错了
请朋友们帮忙 教我怎么改一下 谢谢大家了
我想实现的是 当选中chk(0)的时候 过滤掉text1中所有包涵00的 三个数字(三个数字一组) 要是
同时选中chk(0);chk(1); chk(2)的时候 就同时删除掉包涵 00 01 02 的所有三个数字 只剩下111 这3个数字
text1中的字符和chk.caption(--)中的字符  是不固定的
text1“000 001 010 011 100 101 110 111 012”
chk(0)caption(00); chk(1)caption(01);chk(2)caption(02)

Dim lmi, lmj, lmk, lmo, lmp, i, j, a() As Integer
    Dim lmgl As String
    Dim lmgl1 As String
    Dim lmgl2 As String
   
   
    lmgl = ""
    lmgl1 = Trim(txtjg.Text)
   
    While Len(lmgl1) > 0
        
        lmgl2 = Left(lmgl1, 3)
        lmgl1 = Mid(lmgl1, 5)
        
        
        For i = 0 To 2        
        lmi = Mid(chklm(i).Caption, 1, 1)
        lmj = Mid(chklm(i).Caption, 2, 1)
        lmk = Mid(lmgl2, 1, 1)
        lmo = Mid(lmgl2, 2, 1)
        lmp = Mid(lmgl2, 3, 1)
        
            
            
                If chklm(i).Value = 1 Then 这里循环的时候 同时选中出错 我想了好久 可是 自己比较笨 实在想不出怎么写了
                    If lmi & lmj <> lmk & lmo And lmi & lmj <> lmk & lmp And lmi & lmj <> lmo & lmp And _
                       lmj & lmi <> lmk & lmo And lmj & lmi <> lmk & lmp And lmj & lmi <> lmo & lmp Then
                          
                       lmgl = lmgl2 & " " & lmgl
                       
                    End If
                End If
               
            
            
       Next
    Wend
  
  txtjg.Text = lmgl
搜索更多相关主题的帖子: 彩票3D 朋友 
2011-04-17 02:38
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:652
专家分:3402
注 册:2008-5-7
收藏
得分:0 
根据你的要求,似乎实现起来不麻烦的,我没仔细看你的代码,如果我没理解错的话,你的chklm是个勾选控件数组,你要过滤的数据在文本框txtjg中,各数据用空格隔开的,你将过滤后的数据又放回到这个文本框中了,我实现的方法如下
dim i as integer,j as integer,a() as string,b as string
a=split(trim(txtjg.text)," ")
b=""
for i=0 to ubound(a)
  for j=0 to 2
    if chklm(j).value=1 then if instr(a(i),trim(chklm(j).caption))>0 then a(i)=""
  next
  b=b & a(i) & " "
next
txtjg=trim(b)
经测试,达到你的要求,当全部选中时,还剩下110、111两个数,并不是你说的111一个数

[ 本帖最后由 lowxiong 于 2011-4-17 09:37 编辑 ]
2011-04-17 08:47
xy_fdgg
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2011-3-8
收藏
得分:0 
朋友 谢谢了  可是 不行啊  怎么能把那个 110 也去掉呢? 这样只能去掉 和 chklm(j).caption 一样的 字符  
可是 两个字符分开出现 就不行了  
2011-04-17 10:04
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:652
专家分:3402
注 册:2008-5-7
收藏
得分:20 
又仔细看了下你的代码,反过来算就可以了,修改后代码如下(其实代码可以非常简化一下的):
Dim lmi, lmj, lmk, lmo, lmp, i, j, a() As Integer
    Dim lmgl As String
    Dim lmgl1 As String
    Dim lmgl2 As String
   
   
    lmgl = ""
    lmgl1 = Trim(txtjg.Text)
   
    While Len(lmgl1) > 0
        
        lmgl2 = Left(lmgl1, 3)
        lmgl1 = Mid(lmgl1, 5)
        
        
        For i = 0 To 2
        lmi = Mid(chklm(i).Caption, 1, 1)
        lmj = Mid(chklm(i).Caption, 2, 1)
        lmk = Mid(lmgl2, 1, 1)
        lmo = Mid(lmgl2, 2, 1)
        lmp = Mid(lmgl2, 3, 1)
        
            
            '这里的判断将不等于改成等于,将and改成or,如果符合条件说明要抽空该数据,这样下次循环不会重复判断
            '你的那种判断,当选择一个以上的选项会产生重复累加符合条件的lmgl2,一个不选则一个都不累加
                If chklm(i).Value = 1 Then
                    If lmi & lmj = lmk & lmo Or lmi & lmj = lmk & lmp Or lmi & lmj = lmo & lmp Or _
                       lmj & lmi = lmk & lmo Or lmj & lmi = lmk & lmp Or lmj & lmi = lmo & lmp Then
                          
                       lmgl2 = ""
                    End If
                End If
               
            
            
       Next
       lmgl = lmgl2 & " " & lmgl
       '在这里累加符合条件的数据
    Wend
  
 txtjg.Text = lmgl

[ 本帖最后由 lowxiong 于 2011-4-17 10:26 编辑 ]
2011-04-17 10:19
xy_fdgg
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2011-3-8
收藏
得分:0 
太谢谢了  解决了 烦恼我多日的 难题
2011-04-17 12:45
快速回复:[求助] 新手求助 循环问题 请朋友们帮忙 谢谢大家了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021250 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved