问题由来:静态和瞬时的效果不够用,窗体的动态效果更难实现
- 之前只学习了窗体的静态效果
- 现在考虑 窗体和控件的动态效果
1 srcollbar如何实现自动效果
- 给 Button 2 绑定了这样一个sub
- 点击后,Scroll Bar 1 可以自动变化
- 注意点:因为用的是for 的数量循环,而不是用的真正的延时,所以 scrollbar的范围要设置较大,否则就只能看到瞬时的效果了。看到不到动态的效果。
Sub test_scrollbar1()
Debug.Print "开始运行"
Worksheets("sheet3").ScrollBars("scroll Bar 1").Visible = True
Sheet4.Buttons("button 2").Visible = True
Dim s1 As Shape
For Each s1 In Worksheets("sheet3").Shapes
If s1.Name = "Scroll Bar 1" Then '注意表单控件名,需要先查,另外首字母必须大写,否则找不到
Debug.Print "找到了"
s1.Select
Selection.Value = 0
For i = 1 To 1000
Selection.Value = i
Worksheets("sheet3").Cells(6, 6) = i
Next
Else
Debug.Print "没找到"
End If
Next
Debug.Print "运行结束"
End Sub
2 但是上面的例子,不是按时间自动,而是持续计算的效果
2.1 时间延迟的方法
- 需要加载新的库,Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
- sleep 毫秒数
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub test_t1()
For i = 1 To 10
Debug.Print i
Sleep 2000
Next
End Sub
2.2 加载sleep库,使用sleep 延时,但是后面总会卡
- 注意要把scroll bar 的范围弄小点,否则延时会太久
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub test_scrollbar2()
Debug.Print "开始运行"
Dim s1 As Shape
For Each s1 In Worksheets("sheet3").Shapes
If s1.Name = "Scroll Bar 1" Then '注意表单控件名,需要先查,另外首字母必须大写,否则找不到
Debug.Print "找到了"
s1.Select
Selection.Value = 0
For i = 1 To 10
Selection.Value = i
Worksheets("sheet3").Cells(6, 6) = i
Debug.Print i
Sleep 1000
Next
Else
Debug.Print "没找到"
End If
Next
Debug.Print "运行结束"
End Sub