返回列表 上一主題 發帖

一段關於開盤價最高價最低價收盤價的vb程式碼請教

本帖最後由 luhpro 於 2015-5-5 23:26 編輯
Private Sub Worksheet_Calculate()
        Dim NowDateTime, nowTime, startTime, stopTime
        Di ...
laieven 發表於 2015-5-5 16:32
第一排的dim沒有寫出資料型態是什麼

沒有寫出資料型態的 就是 Variant, 適用範圍最廣, 但最耗記憶體空間.

這一區是宣告在這整張工作表都適用的意思嗎

在 Sub 區塊內的變數定義只能適用於該 Sub 區塊,
全域變數一般都是定義在 Module 區塊內且以 Public 保留字作開頭.


這一段裡的"###"是什麼意思呢?~~

這應該是看盤軟體顯示出來帶有特定意義的表示方式,
要看你程式是從哪來的?有沒有說是哪套看盤軟體?

tr = Int((nowTime - startTime) * 288) + 2 '每差 300 秒就換一列
start=早上9點~~nowtime=現在的時間~~*288+2~~這一串我不大能理解~~

若以一個數字來表示時間值,整數部分表示日期,小數部分則表示時間
(24*60*60)/300=288
時   分  秒   
  一      天

TOP

回復 3# laieven
不是的喔.
上面說過 :
若以一個數字來表示時間值,整數部分表示日期,小數部分則表示時間
在原式 tr = Int((nowTime - startTime) * 288) + 2 '每差 300 秒就換一列  中,
tr 會每 300 秒就加 1(也就是 每差 300 秒就換一列 的意思),
癥結就在於 "小數部分則表示時間" 這一點,
當時間差的小數部分乘上 288 接著再取整數之後就會出現這樣的結果.
你可以執行以下程式看看結果:
  1. Sub nn()
  2.   Dim tr&
  3.   Dim startTime As Date
  4.   
  5.   startTime = Now
  6.   Do While tr <= 20
  7.     tr = Int((Now - startTime) * 28800) + 2 '每差 3 秒就換一列
  8.     Cells(tr, 1) = tr
  9.   Loop
  10. End Sub
複製代碼
當我們對於程式某些部分有疑慮的時候,
最簡單的方式就是用 F8 (單步模式) Try Try 看,
我最常用的方式是先在 "即時運算" 視窗中用 ? 來確認下一列相關變數會變成甚麼值,
或是下一列想要做甚麼事, (例如若是 Cells 或 Range 則確認要作用的儲存格是哪一個<些>)
再按一次 F8 確認結果是否與我所預期的相同.

TOP

        靜思自在 : 甘願做、歡喜受。
返回列表 上一主題