Excel精英培训网

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

[已解决]如何用VBA实现光标定时/间隔N秒自动下移?

[复制链接]
发表于 2013-11-23 14:26 | 显示全部楼层 |阅读模式
求助各位大大,本人新手
例如光标初始位置A1,5秒后自动下移到B1,再过5秒后自动下移到C1,如此类推
能否实现窗体按钮启动 和 自主选择下移的间隔时间?
找了很久都搞不懂,望各位相助
最佳答案
2013-11-23 16:16
本帖最后由 hwc2ycy 于 2013-11-23 16:21 编辑
  1. Option Explicit
  2. Dim dTime As Double
  3. Dim lRow As Long
  4. Dim dStep
  5. Sub 按钮1_Click()
  6.     dStep = InputBox("输入延迟的秒数[两位数字表示:例如1秒,输入01", Default:=5)
  7.     If (Not VBA.IsNumeric(dStep)) Or Len(dStep) <> 2 Then
  8.         MsgBox "录入的非数值或非两位数"
  9.         exit sub
  10.     End If
  11.     Call selectCell
  12. End Sub
  13. Sub 按钮2_Click()
  14.     Application.OnTime dTime, "selectcell", , False
  15. End Sub

  16. Sub selectCell()
  17.     If lRow = Rows.Count Then lRow = 0
  18.     Cells(lRow + 1, 1).Activate
  19.     dTime = Now + TimeValue("00:00:" & dStep)
  20.     Application.OnTime dTime, "selectcell"
  21.     lRow = lRow + 1
  22. End Sub
复制代码
发表于 2013-11-23 16:16 | 显示全部楼层    本楼为最佳答案   
本帖最后由 hwc2ycy 于 2013-11-23 16:21 编辑
  1. Option Explicit
  2. Dim dTime As Double
  3. Dim lRow As Long
  4. Dim dStep
  5. Sub 按钮1_Click()
  6.     dStep = InputBox("输入延迟的秒数[两位数字表示:例如1秒,输入01", Default:=5)
  7.     If (Not VBA.IsNumeric(dStep)) Or Len(dStep) <> 2 Then
  8.         MsgBox "录入的非数值或非两位数"
  9.         exit sub
  10.     End If
  11.     Call selectCell
  12. End Sub
  13. Sub 按钮2_Click()
  14.     Application.OnTime dTime, "selectcell", , False
  15. End Sub

  16. Sub selectCell()
  17.     If lRow = Rows.Count Then lRow = 0
  18.     Cells(lRow + 1, 1).Activate
  19.     dTime = Now + TimeValue("00:00:" & dStep)
  20.     Application.OnTime dTime, "selectcell"
  21.     lRow = lRow + 1
  22. End Sub
复制代码
回复

使用道具 举报

发表于 2013-11-23 16:16 | 显示全部楼层
按钮1_Click,启动光标下移
按钮2_click,结束光标下移
回复

使用道具 举报

发表于 2013-11-23 16:18 | 显示全部楼层
本帖最后由 hwc2ycy 于 2013-11-23 16:21 编辑
  1. Dim dTime As Double
  2. Dim lRow As Long
  3. Dim dStep

  4. Sub StartMoveDown()
  5.     dStep = InputBox("输入延迟的秒数" & vbNewLine & "[两位数字表示:例如1秒,输入01", Default:=5)
  6.     If (Not VBA.IsNumeric(dStep)) Or Len(dStep) <> 2 Then
  7.         MsgBox "录入的非数值或非两位数"
  8.         Exit Sub
  9.     End If
  10.     Call selectCell
  11. End Sub
  12. Sub StopMoveDown()
  13.    on error resume next
  14.     Application.OnTime dTime, "selectcell", , False
  15. End Sub

  16. Sub selectCell()
  17.     If lRow = Rows.Count Then lRow = 0
  18.     Cells(lRow + 1, 1).Activate
  19.     dTime = Now + TimeValue("00:00:" & dStep)
  20.     Application.OnTime dTime, "selectcell"
  21.     lRow = lRow + 1
  22. End Sub
复制代码
回复

使用道具 举报

发表于 2013-11-23 16:21 | 显示全部楼层
当时间间隔过小时,有可能会取消失败。
光标自动下移.rar (16.59 KB, 下载次数: 25)
回复

使用道具 举报

 楼主| 发表于 2013-11-23 16:29 | 显示全部楼层
谢谢版主啦
回复

使用道具 举报

发表于 2013-11-24 08:16 | 显示全部楼层
刚想起来,代码中没有对数值的大小做判断,失误。
  1. Dim dTime As Double
  2. Dim lRow As Long
  3. Dim strInput$

  4. Sub StartMoveDown()
  5.     Dim strPrompt As String

  6.     On Error Resume Next

  7.     If dTime Then Call StopMoveDown

  8.     strPrompt = "输入延迟的秒数" & vbNewLine
  9.     strPrompt = strPrompt & "[两位数字表示:例如1秒,输入01" & vbNewLine
  10.     strPrompt = strPrompt & "数值范围在01-59之间"
  11.     strInput = InputBox(strPrompt, Default:="05")
  12.    
  13.     If Len(strInput) <> 2 Or (Not VBA.IsNumeric(strInput)) Then
  14.         MsgBox "录入的非数值或非两位数字"
  15.         Exit Sub
  16.     End If
  17.    
  18.     If strInput < 1 Or strInput > 59 Then
  19.         MsgBox "输入的数值不在01-59区间内"
  20.         Exit Sub
  21.     End If
  22.     lRow = 0
  23.     Call selectCell
  24. End Sub

  25. Sub StopMoveDown()
  26.     On Error Resume Next
  27.     Application.OnTime dTime, "selectcell", , False
  28. End Sub

  29. Sub selectCell()
  30.     If lRow = Rows.Count Then lRow = 0
  31.     Cells(lRow + 1, 1).Activate
  32.     dTime = Now + TimeValue("00:00:" & strInput)
  33.     Application.OnTime dTime, "selectcell"
  34.     lRow = lRow + 1
  35. End Sub
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 11:16 , Processed in 0.302776 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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