- 帖子
- 766
- 主題
- 256
- 精華
- 0
- 積分
- 1035
- 點名
- 0
- 作業系統
- windows 11
- 軟體版本
- OFFICE2021
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2011-5-30
- 最後登錄
- 2026-8-2
|
本帖最後由 t8899 於 2013-8-22 04:47 編輯
巨集�堛熊{式片斷與儲存格本來就不是綁在一起而是各自獨立的,
Range("Q2") 永遠就是指 Q2 這個儲存格,
...
luhpro 發表於 2013-8-19 22:20 
1.之前的問題,經再測試無法自動關掉訊息窗
是因為跑下面的程式,不知有無辦法改善?
好像只要有在跑time 的程式,就會這樣
Sub a123()
If [U1] <> 1 Then
On Error Resume Next
Application.OnTime EarliestTime:=TimeValue(Runtime), _
Procedure:="a123", Schedule:=False
Exit Sub
On Error GoTo 0
End If
zzzzz
If Range("V14") = 1 Then mytime = "00:01:00"
If Range("V14") = 2 Then mytime = "00:02:00"
If Range("V14") = 3 Then mytime = "00:00:30"
Runtime = Now + TimeValue(mytime)
Application.OnTime Runtime, "Sheet6.a123"
End Sub
2.後來找了一個API(MsgBoxTest)套用,代替CreateObject("Wscript.shell").Popup,
有問題??型態不符合???錯在紅色字?
Private Declare Function MsgBoxTest Lib "user32" Alias "MessageBoxTimeoutA" ( _
ByVal hwnd As Long, _
ByVal lpText As String, _
ByVal lpCaption As String, _
ByVal wType As VbMsgBoxStyle, _
ByVal wlange As Long, _
ByVal dwTimeout As Long) As Long
Private Sub Worksheet_Calculate()
Application.DisplayStatusBar = False
Dim sStr$
Dim ZZ As Range
sStr = ""
sStr2 = ""
For Each ZZ In Range("c2:c111")
If Not IsError(ZZ) Then
If Range("Q26").Value = 1 And flag = True Then
M = Round(ZZ - ZZ.Offset(, 26), 2)
If M >= ZZ.Offset(, 2) Then
If sStr <> "" Then sStr = sStr & Chr(10)
sStr = sStr & "" & Cells(ZZ.Row, 2).Value & "=====> " _
& Round(ZZ - ZZ.Offset(, 26), 2)
End If
If M <= -ZZ.Offset(, 2) Then
If sStr2 <> "" Then sStr2 = sStr2 & Chr(10)
sStr2 = sStr2 & "" & Cells(ZZ.Row, 2).Value & "=====> " _
& Round(ZZ - ZZ.Offset(, 26), 2)
End If
End If
End If
Next
If sStr <> "" Then
MsgBoxTest 0, "", "", sStr, 0, 2500
End If
If sStr2 <> "" Then
MsgBoxTest 0, "", "", sStr2, 0, 2500
End If
3.另外一個方法用" FindWindow " 來關閉這訊息窗,不過找不到這訊息窗?
test.rar (9.63 KB)
http://hi.baidu.com/zzllrr/item/9a561a634853bc90c4d2493d |
|