返回列表 上一主題 發帖

價格紀錄的語法有寫錯嗎??

回復 119# GBKEE
我用 F8 完整 (Offline Trace) 追縱過了,圖片內容 (#N/A) 如同
以前開始在玩 DDE 時,經常於開盤時會碰到它,而用語法將之避開,
所以一看圖片第三列內容便知問題出在何處。等  藍天麗池  來印證吧!
(早期在玩 TradeStation與後期的 MultiChart,需要 DDE Data )

TOP

本帖最後由 c_c_lai 於 2016-4-12 10:53 編輯

回復 121# 藍天麗池
那券商軟體何時開啟?
目前你先將第三列刪除,儲存檔案後,於 "營業時間" 內
再從新啟動試試!

TOP

本帖最後由 c_c_lai 於 2016-4-13 05:36 編輯
回復  c_c_lai
可是C大我DDE是在第二列,我上傳的圖第二列有資料,第三列才出現N/A的不是嗎??
藍天麗池 發表於 2016-4-12 22:26

在 Excel 一開始連上 DDE 時因系統尚未就緒 (DDE與券商軟體間),所以第二列接收值為 #N/A, 又因一開始時第三列資料為空,
  1.                     If .Row = 2 Or .Row > 2 And .Value <> Range(E.Name).Value Then       '  (各股總量有變動)
複製代碼
.Row = 2 (資料最位筆為第二列) 則逕行 ( #N/A) 寫入,接著當第二列接收到DDE接收值 (實際數據) 後,再次觸發
Worksheet_Calculate(),此時  .Row > 2 And .Value <> Range(E.Name).Value  便產生錯誤訊息了。
  1.                 '  #N/A (DDE尚未啟動) ->  Excel 一開始連上 DDE 時因系統尚未就緒,此時接收值為 #N/A,
  2.                 '  當 .Row = 2 (資料最位筆為第二列) 又逢第二列傳入值為 #N/A,所以則逕行將 (#N/A) 直接寫入;
  3.                 '  接著當第二列接收到DDE傳入值 (實際數據) 後,再次觸發 Worksheet_Calculate(),
  4.                 '  此時 .Row > 2 And .Value <> Range(E.Name).Value  於比對時便產生錯誤訊息了。
  5.                 '  ----------------------------------------------------------
  6.                 '  Cells(Rows.Count, cts).End(xlUp).Value : 錯誤 2042 : Variant/Error
  7.                 '  執行階段錯誤 '13':  型態不符合
  8.                '  ----------------------------------------------------------
複製代碼
為了確保未來資料均能正確處理,在新的 "股票10C.xlsm" 的程式�堨[入了一行判斷。
  1.     For cts = 4 To 400 Step 4
  2.         Set Rng = Cells(2, cts)
  3.         If IsError(Rng.Value) Then Exit Sub                             '  總量如為錯誤 (#N/A、#REF!),跳離不做處理
複製代碼
股票10C.rar (21.99 KB)
今早請直接用這支新的 "股票10C.xlsm" 做測試吧!

TOP

本帖最後由 c_c_lai 於 2016-4-13 09:08 編輯

回復 116# GBKEE
  1.                 '  #N/A (DDE尚未啟動) ->  Excel 一開始連上 DDE 時因系統尚未就緒,此時接收值為 #N/A,
  2.                 '  當 .Row = 2 (資料最位筆為第二列) 又逢第二列傳入值為 #N/A,所以則逕行將 (#N/A) 直接寫入;
  3.                 '  接著當第二列接收到 DDE 接收值 (實際數據) 後,再次觸發 Worksheet_Calculate(),
  4.                 '  此時 .Row > 2 And .Value <> Range(E.Name).Value  於上、下欄值比對時便產生錯誤訊息了。
  5.                 '  -----------------------------------------------------------------------------------------
  6.                 '  Cells(Rows.Count, cts).End(xlUp).Value : 錯誤 2042 : Variant/Error
  7.                 '  執行階段錯誤 '13':  型態不符合
  8.                 '  -----------------------------------------------------------------------------------------
複製代碼

TOP

回復 126# 藍天麗池
OK, 今後那就以 "股票10C.xlsm"  為準了,
祝一切順利!大功告成!

TOP

回復 130# 藍天麗池
這隻程式不是 "股票10C.xlsm",
請執行 C 的程式才正確。

TOP

        靜思自在 : 【時日莫空過】一個人在世間做了多少事,就等於壽命有多長。因此必須與時間競爭,切莫使時日空過。
返回列表 上一主題