| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2404 人关注过本帖
标题:关于for next 多重循环的问题
只看楼主 加入收藏
ictest
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:333
专家分:114
注 册:2010-2-17
结帖率:70%
收藏
已结贴  问题点数:20 回复次数:4 
关于for next 多重循环的问题
我写的一段语句是用来读一个TXT文件,文件里从第一行(包括第一行)每隔14行出现一个需要抓取的行,里面共有4行需要抓取;现在需要每抓取一行就写入一个文本框数组(共5个文本框数组,抓取的第一个数据写入text(0),抓取的第二个数据写入text(1)......如果只抓取到4个的话,则第5个文本框为空),现在问题是,我写的语句运行结果是:抓取的第一个数据把5个文本框数组都填满后,再抓取第二个数据,再把5个文本框数组都填满,然后再抓取第三个数据......,请问如何能达到我预想的效果呢?

  Dim xRow, yLine, i, j, z, b As Long, Temp As String, Arr
    For z = 0 To 3
    For b = 0 To 4
  xRow = z * 14 + 1
  yLine = 1
  Me.AutoRedraw = True: j = 1
  Open "c:\1.dat" For Input As #1 '文件路径
  For i = 1 To xRow
  Input #1, Temp
  Next i
  Close #1
  Arr = Split(Temp, Chr(9))
        Text1(b).Text = Arr(yLine - 1)
    Next b
   Next z
搜索更多相关主题的帖子: 文本框 如何 
2016-09-20 17:12
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:10 
  Dim xRow, yLine, i, j, z, b As Long, Temp As String, Arr
  Me.AutoRedraw = True
  Open "c:\1.dat" For Input As #1 '文件路径
    For b = 0 To 4                        '5个文本框
     Input #1, Temp                        '读一行
     yLine = 1   
     Arr = Split(Temp, Chr(9))
     Text1(b).Text = Arr(yLine - 1)        '显示
     For i = 1 To 14                        '跳过14行
       Input #1, Temp
       if eof(1) then exit for            '跳的过程中,如果到文件尾,退出跳来
     Next i
     if eof(1) then exit for            '如果到文件尾,退出循环
   Next b
  Close #1

浏览器写的代码,未测试。
收到的鲜花
  • ictest2016-09-21 05:41 送鲜花  3朵   附言:好文章

授人于鱼,不如授人于渔
早已停用QQ了
2016-09-20 17:57
ictest
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:333
专家分:114
注 册:2010-2-17
收藏
得分:0 
回复 2楼 风吹过b
版主大人:
    经测试,未能达到预期效果,未跳至14行,只跳了4行。现奉上文本文件供测试。需要截取到“6827186-11-2”“6827186-11-3”“6827186-11-4”“6827186-11-5”四个字符串分别按顺序填入text1(0).text、text1(1).text、text1(2).text、text1(3).text中。

我想,我写语句的时候思路也算清晰,因为已知所需字符串的个数,然后通过公式计算出所需读取的行数,然后读文件中的指定行,写入对应的文本框,但就是所需字符串的个数的循环(for 0 TO 3)和 文本框数组循环(for 0 TO 4)搞晕了。

麻烦版主了!


源码和文本.rar (2.34 KB)


[此贴子已经被作者于2016-9-21 00:43编辑过]

2016-09-21 00:42
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:10 
Private Sub Form_Click() '请点击窗体
  Dim r As Integer, s As Integer, a As String
  Open "c:\1.dat" For Input As #1
  While Not EOF(1)
    Line Input #1, a
    If (s Mod 14) = 0 Then
      Text1(r) = a
      r = r + 1
    End If
    s = s + 1
  Wend
  Close #1
End Sub
收到的鲜花
  • ictest2016-09-21 05:41 送鲜花  3朵   附言:我很赞同
2016-09-21 01:02
ictest
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:333
专家分:114
注 册:2010-2-17
收藏
得分:0 
回复 4楼 xzlxzlxzl
非常感谢xzlxzlxzl,您的回复我已经试验过,所得结果是我所需的,谢谢!
您使用的do while not eof(1)循环语句,一直是我的弱项,不太会使用;另外,原来Text1(r) = a这样写语句也可以啊,惊爆我的眼球。
总之我是学习到了,再次感谢!
弱弱的有些小遗憾,您全新改写了源码,我原来语句中的行列语句,xRow = z * 14 + 1和 yLine = 1,在后续中对我的程序完善也是有用的,因为我不但要抓取行,还要抓取列,但总而言之,还是要非常感谢xzlxzlxzl。
2016-09-21 05:40
快速回复:关于for next 多重循环的问题
数据加载中...
 
   



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

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