返回列表 上一主題 發帖

[發問] 此巨集為何錯??

[發問] 此巨集為何錯??

本帖最後由 t8899 於 2013-8-2 15:27 編輯

Private Sub Worksheet_Calculate()
        Dim xx As Range
For Each xx In Range("AG2:AG111")
If IsError(xx) Then
     If xx > xx.Offset(, -1) And Range("Q24").Value = 1 And flag = True Then
CreateObject("Wscript.shell").Popup "===> " & Cells(xx.Row, 2).Value & "=====> " & xx.Value, 1, "Auto Closed MsgBox", 64
Range("Q24").Value = 2
   Application.OnTime Now + TimeValue("00:00:15"), "DDD"
      Exit For
     End If
     End If
Next
end sub
錯誤訊息 型態不符合 ==>紅色行

一開檔才會有錯誤,但跑時是正常的
一開檔dde 連結 AG2:AG111 儲存格會2秒的錯誤訊息, 接著就正常,應該是這原因??
要把AG2:AG111 的錯誤忽略才行 ,才會用]If  IsError(xx)

TOP

已解決
If IsError(xx) Then 弄反了
If not IsError(xx) Then 才對

TOP

如果 AG2:AG111 有10個同時達到條件
會連續10個對話盒出現??
可以將10個放進1個對話盒出現嗎

TOP

回復  t8899
因為沒實際的檔案資料可以驗證結果,
試試看底下的程式碼是否符合你的需求.
luhpro 發表於 2013-8-2 23:59

謝謝!
已測試 ,符合條件中只會傳第一個
附檔請測試 TEST.rar (19.51 KB)

TOP

回復  t8899
把 Exit For 拿掉,
不然當條件成立後,
迴圈只會執行一次.
luhpro 發表於 2013-8-3 08:54

可以了,謝謝指導!

TOP

回復  t8899
把 Exit For 拿掉,
不然當條件成立後,
迴圈只會執行一次.
luhpro 發表於 2013-8-3 08:54

想再多加一個條件
f2:F54 超過 5個 以上條件才成立
要如何改?

TOP

超過 5個 以上?
那就邊處理邊計數囉:
luhpro 發表於 2013-8-3 10:29


是否會太消眊系統資源??

TOP

回復  t8899
相比程式中其他部分的動作來說,

這只是將某個變數做 加1 的動作,

資源消耗幾乎可以不計 ...
luhpro 發表於 2013-8-3 10:58

抱歉,再打擾一下
條件想改成
只有 Range("f2:F54")  變動超過 1% 則條件成立(Range("f2:F54") 為DDE連結)
例如 100 變成 101 或 99 則成立

TOP

本帖最後由 t8899 於 2013-8-4 22:27 編輯
改成這個應該不困難啊:

If Int(xx - xx.Offset(, -1)) >= 0.01 And Range("I1").Value = 1 Then
luhpro 發表於 2013-8-4 21:44

Range("f2:F54")  變動超過 1%
是自欄跟自欄比較 不是跟 E欄(xx.Offset(, -1)) 比較
即變動後-變動前 >1%或<1%  顯示相減的值 BOX(須顯示增加還是減少)

另外下面這段程式碼顯示的對話盒為何沒換行??

Dim sStr2$
Dim ZZ As Range
      sStr2 = ""
   For Each ZZ In Range("c2:c111")
    If Not IsError(ZZ) Then
      If ZZ > ZZ.Offset(, 26) * 1.01 Or ZZ < ZZ.Offset(, 26) * 0.99 And Range("Q26").Value = 1 And flag = True Then
        If sStr2 <> "" Then sSt2r = sStr2 & Chr(10)
        sStr2 = sStr2 & "個股與上一盤===> " & Cells(ZZ.Row, 2).Value & "=====> " & ZZ.Value
        
        
        ' Exit For
      End If
    End If
  Next
  If sStr2 <> "" Then CreateObject("Wscript.shell").Popup sStr2, 2, "Auto Closed MsgBox", 64
    Range("Q26").Value = 2
        Application.OnTime Now + TimeValue("00:00:15"), "FFF"

TOP

        靜思自在 : 脾氣嘴巴不好,心地再好也不能算是好人。
返回列表 上一主題