返回列表 上一主題 發帖

[發問] 算漲跌與均價

回復 4# daniel5168

試試看
  1. Sub 自動記錄()
  2.     Dim Rng As Range, 漲跌 As Single, 均價 As Single
  3.     If uMode = 0 Then Exit Sub
  4.     With Sht1
  5.         If Time > TimeValue(EndTime) Then '收盤時間以後不執行
  6.             .[O8] = "已過收盤"
  7.             uMode = 0
  8.             Exit Sub
  9.         End If
  10.         '----------------------------------------------------------
  11.         Set Rng = .Range("A65536").End(xlUp).Offset(1)
  12.         .Range("A" & Rng.Row & ":C" & Rng.Row).Value = .Range("A2:C2").Value
  13.         With .Cells(Rng.Row, "C")   '
  14.             '漲跌的定義應該是(這分鐘成交價-上分鐘成交價)/上分鐘成交價
  15.             If .Row >= 4 Then 漲跌 = (.Cells - .Cells.Offset(-1)) / .Cells.Offset(-1)
  16.             '20單位週期均價
  17.             If .Row >= 22 Then 均價 = Application.WorksheetFunction.Average(.Cells.Offset(-19).Resize(20))
  18.         End With
  19.         .Range("D2") = IIf(漲跌 <> 0, 漲跌, "")
  20.         .Range("E2") = IIf(均價 <> 0, 均價, "")
  21.         .Range("D" & Rng.Row & ":E" & Rng.Row).Value = .Range("D2:E2").Value
  22.         '------------------------------------------------
  23.     End With
  24.     If ActiveSheet.Name = Sht1.Name And xRow > 8 Then
  25.         ActiveWindow.ScrollRow = xRow - 6 '讓最新資料保持在可見視窗中
  26.     End If
  27.     Beep
  28.     '------------------------------------------------
  29.     ThisWorkbook.Save   '存檔
  30.     Application.OnTime Now + TimeValue("00:00:01"), "自動記錄"   '每一秒遞迴一次
  31. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 GBKEE 於 2015-8-4 14:17 編輯

回復 6# daniel5168


但他好像是每秒記錄一次,
這裡修改 Application.OnTime Now + TimeValue("00:01:00"), "自動記錄"   '每一分遞迴一次
可以不用 If Second(Time) = 0 And Minute(Time) Mod 1 = 0 Then 這行程式碼

錯誤訊息 沒有 With, lpk187 說了少了End If
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 10# daniel5168
  1. '每1分鐘記錄,5分鐘則改為 Mod 5
  2.         If Second(Time) = 0 And Minute(Time) Mod 1 = 0 Then
複製代碼
條件式 每1分鐘整 執行   If 內的程式碼 ,這沒問題的.
但為何要每一秒遞迴一次,這多此一舉.
  1. Application.OnTime Now + TimeValue("00:00:01"), "自動記錄"   '每一秒遞迴一次
複製代碼
一分鐘遞迴一次,不用  If Second(Time) = 0 And Minute(Time) Mod 1 = 0 Then 程式碼不是簡潔一些嗎?
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 稻穗結得越飽滿,越會往下垂,一個人越有成就,就要越有謙沖的胸襟。
返回列表 上一主題