返回列表 上一主題 發帖

CreateObject("Wscript.shell").Popup 自動關閉功能失效??

本帖最後由 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
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 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
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 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
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 11# t8899
Winddows工作管理員有事在忙,CreateObject("wscript.shell")須等候排程處裡
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 君子如水,隨方就圓,無處不自在。
返回列表 上一主題