Board logo

標題: CreateObject("Wscript.shell").Popup 自動關閉功能失效?? [打印本頁]

作者: t8899    時間: 2013-7-20 09:01     標題: Worksheet_Calculate 裡想暫停三分鐘??

Private Sub Worksheet_Calculate()
If Not IsError(Range("q2")) Then  
        If Range("Q2").Value > Range("R1").Value And Range("Q1").Value = 1 And flag = True Then
            CreateObject("Wscript.shell").Popup  Range("Q2").Value
            End If
       End sub
----------------------------------------------------
想在 CreateObject("Wscript.shell").Popup  Range("Q2").Value 之後
暫停3分鐘繼續執行,如何做?
作者: t8899    時間: 2013-7-20 09:31

本帖最後由 t8899 於 2013-7-20 09:36 編輯

我用
Application.Wait Now + TimeSerial(0, 3, 0)
會出現漏斗狀,無法做其他事情
這三分鐘裡,不要出現程式在跑(出現漏斗狀)
作者: t8899    時間: 2013-7-20 13:12

如果用
Application.OnTime Now + TimeValue("00:03:00")
是否不會有出現漏斗的狀況??
不知如何改呢?
作者: t8899    時間: 2013-7-20 13:50

我剛試了
停止三分鐘期間 IF 條件為何還是在跑??
作者: GBKEE    時間: 2013-7-20 14:44

本帖最後由 GBKEE 於 2013-7-20 16:14 編輯

回復 4# t8899
試試看
  1. Private Sub Worksheet_Calculate()
  2.     Dim T As Date
  3.     If Not IsError(Range("q2")) Then
  4.         If Range("Q2").Value > Range("R1").Value And Range("Q1").Value = 1 And flag = True Then
  5.             CreateObject("Wscript.shell").Popup Range("Q2").Value
  6.             T = Time
  7.             Do While Time < T + #12:03:00 AM#
  8.                 DoEvents
  9.             Loop
  10.         End If
  11.     End If
  12. End Sub
複製代碼

作者: t8899    時間: 2013-7-22 09:48     標題: CreateObject("Wscript.shell").Popup 自動關閉功能失效??

Private Sub Worksheet_Calculate()

         If Not IsError(Range("Q5")) Then
            If (Range("Q5").Value < Range("Q6").Value) And Range("S8").Value = 2 And flag = True Then
        CreateObject("Wscript.shell").Popup "xxxxxxx=>正在殺  " & Range("Q5").Value, 3, "Auto Closed MsgBox", 64
        Cells(1, 13).Interior.ColorIndex = 2
         ' flag = False
         Range("Q6").Value = Range("Q6").Value - Range("R4").Value
         Range("R6").Value = Range("R6").Value - Range("R4").Value
         flag = True
         Cells(1, 13).Interior.ColorIndex = 8
        
         End If
    End If
   
end sub

開檔選擇不更新(DDE) 測試一切正常
但選擇更新後,自動關閉功能不知為何會失效???
作者: GBKEE    時間: 2013-7-22 11:57

回復 6# t8899
網路抓下的
  1. Sub MsgBox_Wait()
  2.     Dim WshShell, BtnCode
  3.     Set WshShell = CreateObject("WScript.Shell")
  4.     BtnCode = WshShell.popup("等待2秒不按我就自動關閉?", 2, "測試:", 4 + 16)
  5.     Select Case BtnCode
  6.         Case 6
  7.             BtnCode = "你按了""是""." 'MsgBox "你按了""是""."
  8.         Case 7
  9.             BtnCode = "你按了""否""." 'MsgBox "你按了""否""."
  10.         Case -1
  11.         BtnCode = "沒有按任何鍵"
  12.     End Select
  13.     BtnCode = WshShell.popup(BtnCode, 2, "測試完畢", 1)
  14. End Sub
複製代碼

作者: t8899    時間: 2013-7-22 12:05

回復  t8899
網路抓下的
GBKEE 發表於 2013-7-22 11:57


我不會套用耶!
作者: t8899    時間: 2013-7-22 15:42

直接這樣套用,明天再測試
Dim ws As Object
    Set ws = CreateObject("wscript.shell")
作者: GBKEE    時間: 2013-7-22 16:34

回復 8# t8899
我測試在作業系統有其他程式須處理,或交錯於Excel應用程式與其他應用程式之間 , WshShell.Popup 會不穩定(失去自動關閉功能)
以下程式碼 試試看
  1. Option Explicit
  2. Private Sub Worksheet_Calculate()
  3.     If Not IsError(Range("Q5")) Then
  4.         If (Range("Q5").Value < Range("Q6").Value) And Range("S8").Value = 2 And flag = True Then
  5.             Wait_sub #12:00:30 AM#   '程式暫停時間  '#12:01:00 AM# (一分鐘 ), #12:00:30 AM# (三十秒鐘 )
  6.             Cells(1, 13).Interior.ColorIndex = 2
  7.             ' flag = False
  8.             Range("Q6").Value = Range("Q6").Value - Range("R4").Value
  9.             Range("R6").Value = Range("R6").Value - Range("R4").Value
  10.             flag = True
  11.             Cells(1, 13).Interior.ColorIndex = 8
  12.         End If
  13.     End If
  14. End Sub
  15. Private Sub Wait_sub(T As Date)
  16.     Dim tt As Date
  17.     'T = T + Time                                    '程式碼在此會扣掉 語音播放的時間
  18.     With CreateObject("SAPI.SpVoice")               '創建語音物件
  19.         .volume = 100                               '音量 0 - 100
  20.         .Rate = 0                                   '速度  0以上
  21.         .Speak "Please Wait" & T                    '語音播放
  22.     End With
  23.     T = T + Time                                    '程式碼在此語音播放完畢,開始計時
  24.     tt = Time
  25.     Application.DisplayStatusBar = True             '狀態列設定為可見
  26.     Do Until Time > T
  27.         DoEvents
  28.         If tt <> Time Then
  29.             tt = Time
  30.             Application.StatusBar = "還剩 " & Format(T - Time, "hh:mm:ss")  '狀態列顯示剩餘時間
  31.         End If
  32.     Loop
  33.     Application.StatusBar = False                    '狀態列顯示為 [就緒]
  34. End Sub
複製代碼

作者: t8899    時間: 2013-7-23 10:38

我把
Dim ws As Object
Set ws = CreateObject("wscript.shell")
套進去, 設定1秒關閉,但它為何在15-30 秒之間才會關閉 ??

-----------------------------------------------------
Private Sub Worksheet_Calculate()
Dim ws As Object
Set ws = CreateObject("wscript.shell")
       If Not IsError(Range("Q5")) Then
            If (Range("Q5").Value < Range("Q6").Value) And Range("S8").Value = 2 And flag = True Then
       ws.Popup "xxxxxxx=>正在殺  " & (Range("Q5").Value), 1, "Auto Closed MsgBox"
                 Cells(1, 13).Interior.ColorIndex = 2
          ' flag = False
          Range("Q6").Value = Range("Q6").Value - Range("R4").Value
          Range("R6").Value = Range("R6").Value - Range("R4").Value
         flag = True
         Cells(1, 13).Interior.ColorIndex = 8
        
         End If
    End If
end sub
作者: GBKEE    時間: 2013-7-23 11:02

回復 11# t8899
Winddows工作管理員有事在忙,CreateObject("wscript.shell")須等候排程處裡




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