返回列表 上一主題 發帖

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

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

Private Sub Worksheet_Calculate()
        Dim NowDateTime, nowTime, startTime, stopTime
        Dim tr As String

        NowDateTime = Now '現在的時間值, 去掉整數部份,
        nowTime = (NowDateTime - Int(NowDateTime)) '得到現在的時間值
        startTime = Range("A6") '開盤時間, 例如: "09:00:00 AM"
        stopTime = Range("A8")  '收盤時間, 例如: "01:30:00 PM"

        If nowTime <= startTime Then '尚未開盤
                Exit Sub
        ElseIf nowTime > stopTime Then '已經收盤
                Exit Sub
        ElseIf [A2] <> "-" And [A2] <> "###" Then '清盤的狀態, 不取其資料
                tr = Int((nowTime - startTime) * 288) + 2 '每差 300 秒就換一列
                If Range("D" & tr) = "" Then
                        Range("D" & tr) = Range("A2")        '開始價
                End If
                If Range("E" & tr) = "" Or Range("A2") > Range("E" & tr) Then
                        Range("E" & tr) = Range("A2")        '最高價
                End If
                If Range("F" & tr) = "" Or Range("A2") < Range("F" & tr) Then
                        Range("F" & tr) = Range("A2")        '最低價
                End If
                Range("G" & tr) = Range("A2")                '結束價
        End If
End Sub


問題:
1.Private Sub Worksheet_Calculate()
        Dim NowDateTime, nowTime, startTime, stopTime
        Dim tr As String

這一區的意義是?
第一排的dim沒有寫出資料型態是什麼
第二排是定義tr的資料型態為字串

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

2. ElseIf [A2] <> "-" And [A2] <> "###" Then '清盤的狀態, 不取其資料
這一段裡的"###"是什麼意思呢?~~前面的意思是寫a2不等於空白~~and a2不等於###~~那請問###是什麼意思阿??

3.tr = Int((nowTime - startTime) * 288) + 2 '每差 300 秒就換一列
start=早上9點~~nowtime=現在的時間~~*288+2~~這一串我不大能理解~~還請高手能協助解釋一下嗎?感謝了

問題很基礎~~個人自學幾個月~~很多一知半解~~問題若太笨~~還請見諒

回復 2# luhpro


    先感謝"luhpro"的熱心協助!!!感恩!!

1.288的是每5分鐘的意思這我能理解~~我只是對這串"tr = Int((nowTime - startTime) * 288) +2"
不大懂(這問題似乎有點蠢∼不好意思)
int是個取整數的函數

為何用現在的時間去減掉開始的時間~~這不就得到了從開始到現在總共已經走了多少時間對嗎!

那為何*288~~~假設9點開始~~現在是9點5分~~整個式子不就變成int(5*288)+2~~~不大能理解捏????還有那個+2是要幹嘛用呢?


2.設好tr之後~~就把它放到後面
" If Range("D" & tr) = "" Then
                        Range("D" & tr) = Range("A2")  

等等等的式子裡~~~似乎是用計算後的結果來做為儲存格的位置計算用~~讓操作的儲存格
可能是d5或d8或d2不等的位置~~假設計算結果是5這一段是希望這一段時間內整個計算流程只在d5-e5-f5-g5這一列做大小筆記並排序~~對嗎?

TOP

回復 4# luhpro


    感謝熱心回答
我會多嘗試看看
感謝你

TOP

回復 4# luhpro


問題請教
.Private Sub Worksheet_Calculate()
寫在這個計算程序的意思ˋ~~是不是就是代表只要該檔案啟動~~這個工作表就自動啟動計算
而這個程序也該寫在工作表中而不是"thisbook"�堣]不是寫在模組嗎~~對嗎?

TOP

        靜思自在 : 【生命在呼吸間】佛陀說:「生命在呼吸間。」人無法管住自己的生命,更無法擋住死期,讓自己永住人間。既然生命去來這麼無常,我們更應該好好地愛惜它、利用它、充實它,讓這無常、寶貴的生命,散發它真善美的光輝,映照出生命真正的價值。
返回列表 上一主題