iT邦幫忙

0

請問 EXCEL VBA 無法執行 set nothing 的原因有那些?

  • 分享至 

  • xImage

這是有關股市的檔案,檔案中某些工作表是有DDE 連結的。
目前要執行的程式是CSV 的資料整理和分析,和網路連結無關。
以前 run 都沒問題,就在證券公司資料無法連線後,重新開啟時,自動跑出Windows 記憶體診斷,診斷後沒有出現任何說明,就一直出現無法執行。
在DDE 的連線恢復正常後,就一直是這樣。
使用[偵錯]- [編譯 VBA Project],也是出現[編譯錯誤,必須是變數或函數]。
請教各位前輩,如何排除錯誤?

https://ithelp.ithome.com.tw/upload/images/20190410/20113454QRS6z6CRlB.png

[RE: ccutmis]剛剛試了把 on error resume next 移到 set t = nothing 前面,結果還是一樣。
對了,在DDE 恢復正常後,情況還是一直沒有排除。
https://ithelp.ithome.com.tw/upload/images/20190410/20113454BjMufi9HWN.png

[RE: ccutmis]不好意思,這程式是自己寫的。因為是初學者,很多電腦原理都不懂。只會邏輯。:P
除了重新啟動數次外,還依照 youtube 清理了系統垃圾,結果都沒效。
https://www.youtube.com/watch?v=iFfexVEpAbo
本來還想要釋放記憶體,網路上都找不到方法,所以才上來求教。

[RE: 海綿寶寶]剛剛試了 Dim t, 果然成功了。
之前宣告成 Boolean、Variant 都不行。沒想到宣告還可以寫成這樣,太感謝了。

用的就是元大的,雖然也有別家券商,可是只有元大的自選股可以用CSV匯入,要看技術圖比較方便。
也試過他們的RTD,不過,過了營業時間要看資訊時,就無法顯示完整的訊息,是一大缺點。

[for all:]這是第一次在公共論壇裏發問,能得到大家熱心的幫忙,由衷感謝! ^_^

看更多先前的討論...收起先前的討論...
ccutmis iT邦高手 2 級 ‧ 2019-04-10 13:20:44 檢舉
改成
On Error Resume Next
Set t = Nothing
試試看
當然最好是問寫這個VBA 的原作者當"證券公司資料無法連線,DDE資料有問題時"有什麼錯誤判斷&處理機制,如果沒有,恩...

至於錯誤的原因你在問題裡面已經提出來了 t 會去存取另一個工作表,這工作表的內容是以DDE方式去存取,假如運作正常,不會有資料表被鎖定問題, set t = Nothing 就能正常執行,運作不正常的時候,資料表被鎖定了,之後再執行set t = Nothing就會報錯。看你的源碼 on error resume next 是在 set t... 的下一行 所以就會先報錯
當然這也有可能是原作者故意這麼寫的,總之最好問原作者,不要一知半解瞎改,資訊界有句名言叫作garbage in barbage out,如果你連進來的資料都可能有問題,要怎麼用它呢^^"
ccutmis iT邦高手 2 級 ‧ 2019-04-10 13:41:23 檢舉
假如DDE恢復還是一樣的話看要不要把作業系統重開看看 說不定是檔案被鎖住了沒辦法從記憶體釋放掉
不然還是找原作者吧 這樣瞎子摸象 沒法直接抓問題核心的^^"
ccutmis iT邦高手 2 級 ‧ 2019-04-10 13:57:50 檢舉
那我覺得你可能去找本書來看,建議不要用excel+dde, 用python或許好一點, 上google搜"python 股票 書"
小魚 iT邦大師 1 級 ‧ 2019-04-10 14:15:33 檢舉
說的也是,
其實Excel不是拿來讓你們做這些事的,
Excel VBA也確實有一些無解的Bug,
學點程式語言吧...
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
海綿寶寶
iT邦大神 1 級 ‧ 2019-04-10 14:16:28
最佳解答
   Dim t   '打幾個字,試試無妨
   Set t = Nothing

順帶請教您用的是那一家券商?
我之前看過元大證券
有提供DDE的服務
現在已經改推元大自己寫的RTD元件了
/images/emoticon/emoticon06.gif

問題解決就好
有空歡迎常來逛逛
更歡迎分享幾盞股市明燈
/images/emoticon/emoticon44.gif

我要發表回答

立即登入回答