Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2917|回复: 11

[已解决]请问老师,怎么让这个程序中间可以停一下?谢谢了

[复制链接]
发表于 2011-3-11 23:09 | 显示全部楼层 |阅读模式
怎么让这个程序中间可以停一下?怎么实现按一下cmdbutton才让运行一下?谢谢!
最佳答案
2011-3-11 23:41

  1. Option Base 1
  2. Dim endRow As Integer
  3. Dim curRow As Integer
  4. Dim nextRow As Integer
  5. Private Sub cmd_Click()
  6. Dim i As Integer
  7. '若当前行存在
  8. If curRow Then
  9.     For i = nextRow + 1 To endRow
  10.     '查找下一行
  11.         If Cells(i, 1) = txtjs.Value Then
  12.             curRow = nextRow
  13.             nextRow = i
  14.             Exit For
  15.         End If
  16.     Next i
  17. Else
  18.     For i = 1 To endRow
  19.         If Cells(i, 1) = txtjs.Value Then
  20.             curRow = i
  21.             nextRow = i
  22.             Exit For
  23.         End If
  24.     Next i
  25.     For i = nextRow + 1 To endRow
  26.         If Cells(i, 1) = txtjs.Value Then
  27.             nextRow = i
  28.             Exit For
  29.         End If
  30.     Next i
  31. End If
  32. If i > endRow Then
  33.     '若下一行存在
  34.     If nextRow Then
  35.         txtxs.Value = Cells(nextRow, 2).Value
  36.         MsgBox "已经是最后一行了"
  37.         
  38.     Else
  39.     '下一行不存在,则
  40.         MsgBox "没有找到相关数据"
  41.     End If
  42. Else
  43.     cmd.Caption = "查找下一个"
  44.     txtxs.Value = Cells(curRow, 2).Value
  45. End If

  46. End Sub
  47. '对数据进行初始化,比如说当前查找到的数据行及下一数据行,还有总的行数
  48. Private Sub UserForm_Initialize()
  49. endRow = Range("a65536").End(xlUp).Row
  50. curRow = 0
  51. nextRow = 0
  52. End Sub


复制代码

QQ截图未命名.png

怎样按下cmdbutton后才运行一次.rar

9.74 KB, 下载次数: 6

发表于 2011-3-11 23:25 | 显示全部楼层
呃。。。。
你不能在单击的过程中把所有的循环都做完,这样的话,就会直接跳到结果了。。。
回复

使用道具 举报

 楼主| 发表于 2011-3-11 23:28 | 显示全部楼层
回复

使用道具 举报

发表于 2011-3-11 23:41 | 显示全部楼层    本楼为最佳答案   

  1. Option Base 1
  2. Dim endRow As Integer
  3. Dim curRow As Integer
  4. Dim nextRow As Integer
  5. Private Sub cmd_Click()
  6. Dim i As Integer
  7. '若当前行存在
  8. If curRow Then
  9.     For i = nextRow + 1 To endRow
  10.     '查找下一行
  11.         If Cells(i, 1) = txtjs.Value Then
  12.             curRow = nextRow
  13.             nextRow = i
  14.             Exit For
  15.         End If
  16.     Next i
  17. Else
  18.     For i = 1 To endRow
  19.         If Cells(i, 1) = txtjs.Value Then
  20.             curRow = i
  21.             nextRow = i
  22.             Exit For
  23.         End If
  24.     Next i
  25.     For i = nextRow + 1 To endRow
  26.         If Cells(i, 1) = txtjs.Value Then
  27.             nextRow = i
  28.             Exit For
  29.         End If
  30.     Next i
  31. End If
  32. If i > endRow Then
  33.     '若下一行存在
  34.     If nextRow Then
  35.         txtxs.Value = Cells(nextRow, 2).Value
  36.         MsgBox "已经是最后一行了"
  37.         
  38.     Else
  39.     '下一行不存在,则
  40.         MsgBox "没有找到相关数据"
  41.     End If
  42. Else
  43.     cmd.Caption = "查找下一个"
  44.     txtxs.Value = Cells(curRow, 2).Value
  45. End If

  46. End Sub
  47. '对数据进行初始化,比如说当前查找到的数据行及下一数据行,还有总的行数
  48. Private Sub UserForm_Initialize()
  49. endRow = Range("a65536").End(xlUp).Row
  50. curRow = 0
  51. nextRow = 0
  52. End Sub


复制代码

回复

使用道具 举报

发表于 2011-3-11 23:42 | 显示全部楼层
乒乓27 发表于 2011-3-11 23:28
回复 放浪形骸 的帖子

那怎么停一下啊??

这样停咯。如上述
回复

使用道具 举报

发表于 2011-3-11 23:45 | 显示全部楼层
因为这个需要提前知道我的当前行是不是最后一行,所以每一次查找的时候要比原来多找一次,所以每一次查找之后都是预先已经知道下一行的位置。
若下一行不存在的话,那就提示当前行为最后一行。
回复

使用道具 举报

 楼主| 发表于 2011-3-12 23:07 | 显示全部楼层
回复 放浪形骸 的帖子

谢谢,这么多循环啊,还有一个问题,我想了想,就是想用一个数组来保存相同数据的行数,但是在cmd的click中无法调用数组了,我想,是不是可以用function返回一个数组呢??期待您的指点!再次谢谢!

如何调用数组??.rar

11.55 KB, 下载次数: 3

回复

使用道具 举报

发表于 2011-3-13 00:05 | 显示全部楼层
乒乓27 发表于 2011-3-12 23:07
回复 放浪形骸 的帖子

谢谢,这么多循环啊,还有一个问题,我想了想,就是想用一个数组来保存相同数据的行 ...

每次的循环不多的,每次都是只有两个
回复

使用道具 举报

发表于 2011-3-13 00:07 | 显示全部楼层
乒乓27 发表于 2011-3-12 23:07
回复 放浪形骸 的帖子

谢谢,这么多循环啊,还有一个问题,我想了想,就是想用一个数组来保存相同数据的行 ...

你也可以在SUB外面定义个数组,然后将相同的值的行数放在数组里。
SUB外面再定义一个INTEGER,然后表示读取数组中的第几个
这样就可以每次CLICK的时候INTEGER自加1,然后显示当前位置的行数就OK了。
回复

使用道具 举报

 楼主| 发表于 2011-3-13 00:28 | 显示全部楼层
回复 放浪形骸 的帖子

sub外???那不还是在sub中定义的吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-24 10:25 , Processed in 1.811011 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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