Board logo

標題: [發問] 讓程序畫面停留0.1秒? [打印本頁]

作者: yangjie    時間: 2014-4-9 11:43     標題: 讓程序畫面停留0.1秒?

請教大大
      在VBA下
      For repeat1 = 1 To 4
                n1 = CLng(TextBox75) + 1
                For j = 74 To 23 Step -1
                    Controls("TextBox" & j) = Controls("TextBox" & j - 13)
                    Controls("TextBox" & j).BackColor = Controls("TextBox" & j - 13).BackColor
                Next
                Controls("TextBox" & 75) = n1
                讓畫面停留0.1秒
       Next
應如何寫法?      謝謝
作者: yen956    時間: 2014-4-9 13:27

回復 1# yangjie
'試試看, 停留時間依CPU而異
Sub test()
   '讓畫面停留0.1秒
   
   [A1].Select
   For i = 1 To 50000000
   Next
   [IV1].Select
   For i = 1 To 50000000
   Next
   [A1].Select
End Sub
作者: yangjie    時間: 2014-4-9 17:14

回復 2# yen956
謝謝
有無辦法 使用
    類似Application.OnTime Now+value("00.00.01"),-----
    將使空轉0.1秒  再繼續------的方式作處理
請賜教
作者: Hsieh    時間: 2014-4-9 17:39

回復 3# yangjie

調用API的sleep函數
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sleep 100 ’停止0.1秒
作者: GBKEE    時間: 2014-4-9 17:49

本帖最後由 GBKEE 於 2014-4-11 05:43 編輯

回復 1# yangjie
  1. Option Explicit
  2. Private Sub UserForm_Click()
  3.     Dim J
  4.     For J = 1 To 4  '4個 TextBox 控制項
  5.         With Controls("TextBox" & J)
  6.             .BackColor = IIf(.BackColor = vbRed, vbYellow, vbRed)
  7.             .Text = Val(.Text) + J
  8.         End With
  9.         Application.Wait Time + #12:00:01 AM# ' 讓畫面停留 1秒
  10.     Next
  11. End Sub
複製代碼

作者: yen956    時間: 2014-4-9 17:53

回復 4# Hsieh
真博學, 收下啦, 謝謝!!
作者: yangjie    時間: 2014-4-10 00:15

回復 5# GBKEE
謝了  學到兩招 感激
作者: yangjie    時間: 2014-4-10 22:48

回復 4# Hsieh
請教 Hsieh版大
        Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
        此行應放在哪裡??
作者: yangjie    時間: 2014-4-10 22:53

回復 5# GBKEE
請教GBKEE版大
        Application.Wait Time + #12:00:01 AM# '
       12:00:01 應是讓畫面停留1秒 ,那0.1秒應如何表示?
    Application.Wait Time + (#12:00:01 AM#)/10  是行不通  應如何修正??
作者: GBKEE    時間: 2014-4-11 05:42

回復 9# yangjie
API
函數 Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
需置於一般模阻的頂端

Application.Wait 的時間最小是秒數, 0.1不接受的.
作者: Hsieh    時間: 2014-4-11 17:05

本帖最後由 Hsieh 於 2014-4-11 17:08 編輯

回復 8# yangjie
這應該是表單模組的程式
  1. Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

  2. Private Sub CommandButton1_Click()
  3.   For repeat1 = 1 To 4
  4.                 n1 = CLng(TextBox75) + 1
  5.                 For j = 74 To 23 Step -1
  6.                     Controls("TextBox" & j) = Controls("TextBox" & j - 13)
  7.                     Controls("TextBox" & j).BackColor = Controls("TextBox" & j - 13).BackColor
  8.                 Next
  9.                 TextBox75 = n1
  10.                 DoEvents
  11.                 Sleep 100
  12.        Next
  13. End Sub
複製代碼
如果要讓其他模組也能共用此函數
就在一般模組內設成共用函數
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
作者: yangjie    時間: 2014-4-12 18:25

回復 10# GBKEE
受教了    謝謝
作者: yangjie    時間: 2014-4-12 23:13

回復 11# Hsieh
      DoEvents   
      Sleep 100
太神奇了   謝謝 Hsieh版大
再請教
1.DoEvents 是何作用?
2.現為office2003效果很好用,不知在office2010之下
     Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    可以產生作用嗎?
作者: Hsieh    時間: 2014-4-13 12:59

本帖最後由 Hsieh 於 2014-4-13 13:09 編輯

回復 13# yangjie

DoEvents將控制權交還應用程式
調用API函數與Windows位元版本有關,而非關OFFICE的新舊
若你的是OFFICE 2010 for 64位元版本請參考
   http://forum.twbts.com/thread-10506-1-1.html
作者: yangjie    時間: 2014-4-13 16:55

回復 14# Hsieh

謝謝指導
受用了




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)