返回列表 上一主題 發帖

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

回復 45# c_c_lai


    別這樣說,C大真是辛苦你了,假日這麼早就起床幫我解決問題,萬分感謝

TOP

本帖最後由 c_c_lai 於 2016-4-9 08:57 編輯

回復 40# 藍天麗池
終於追蹤到問題點了:
請修改 RecordPrice 的 WR 判斷
  1.     '  WR = Range(TG).End(xlDown).Row + 1        '  修改成以觸發之欄位為判斷基點 (WR=1048577 ?)
  2.     '  當資料列僅有兩列時,如從第二列作為判斷,則 WR 的結果值為 1048577,而非正確值 3
  3.     '  故將 End(xlDown) 修正為 End(xlUp),如此始能正確無誤地取得正確值 3
  4.     '  設若對應值內容已存在有三列、或以上者,無論是使用 xlDown 或 xlUp 均無差異,皆能正確取值。
  5.     WR = Range(Left(TG, Len(TG) - 1) & Rows.Count).End(xlUp).Row + 1
複製代碼
因為我都是在超過第三列德情況下執行,沒留意到你原始的 xlDown 語法,所以會照成無法執行。
第 1048577 列 ??????, Oh My God!
抱歉!

TOP

回復 42# GBKEE

G大妳的版本會全部往下寫,而不是有變動才往下寫,是這樣嗎??
而且我手動更改也不會繼續往下寫

TOP

回復 42# GBKEE


    我了解了,我試試看

TOP

本帖最後由 GBKEE 於 2016-4-9 08:46 編輯

回復 41# 藍天麗池
37帖的檔案
ThisWorkbook
  1. Private Sub Workbook_Open()
複製代碼
Sheet
  1. Private Sub Worksheet_Calculate()
複製代碼
是啊,螢幕看久眼睛會痛,上線的時間需控制一下.
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 39# GBKEE


    G大好久不見了,之前聽你說眼睛不舒服,還以為你比較少上線了

G大請問一下這個是要放在哪裡?? Sheet or module ??
這個是新的版本,還是針對C大的修改的呢??

TOP

回復 38# c_c_lai

C大,這樣說好了,你一開始傳給我的股票0我用手動更改是可以執行的,所以我就把原本那份套入公式,之後就不能執行,我"完全"沒有變更,所以我在想之前那份可以執行是因為"純數字",後來帶入公式後無法執行,會不會是因為程式對公式的判斷出現問題??

因為原本用數字可以執行,帶入公式後就不行,所以我認為問題不會出現在券商的軟體,因為如果問題出現在軟體,那一開始的股票0就也會無法執行阿,但純數字版的卻可以執行,以上是我得看法,C大認為呢??

TOP

本帖最後由 GBKEE 於 2016-4-10 14:28 編輯

回復 37# 藍天麗池
  1. Option Explicit
  2. Private Sub Workbook_Open()
  3.     Dim xRng As Range, First_Aaddres  As String, xRng_Name As String
  4.     Application.Calculation = xlCalculationAutomatic
  5.     With Sheets("RTD")
  6.         Set xRng = .Rows(2).Cells.Find("TotalVolume", LookIn:=xlFormulas)
  7.         If Not xRng Is Nothing Then
  8.             First_Aaddres = xRng.Address
  9.             Do
  10.                  xRng_Name = Split(xRng.Formula, "'")(1)
  11.                  xRng_Name = "TotalVolume" & Split(xRng_Name, ".")(0)
  12.                 .Names.Add xRng_Name, xRng  ''名稱定義:所有總量的Dee公式的儲存格
  13.                 Set xRng = .Rows(2).Cells.FindNext(xRng)
  14.             Loop Until xRng.Address = First_Aaddres
  15.         End If
  16.     End With
  17. End Sub
複製代碼
重算事件試試看
  1. Option Explicit
  2. Private Sub Worksheet_Calculate()
  3.         Dim Rng As Range, E As Variant
  4.         On Error Resume Next ' 檔案開啟時 DEE傳回錯誤值
  5.         Set Rng = UsedRange.Cells.SpecialCells(xlCellTypeFormulas, xlErrors)
  6.         If Not Rng Is Nothing Then Exit Sub
  7.         On Error GoTo 0 '開盤不再處理程式碼的錯誤
  8.        If Time < #9:00:00 AM# Or Time > #1:31:00 PM# Then Exit Sub '非營業時間
  9.         For Each E In Me.Names
  10.             If E.Name Like "*TotalVolume*" Then   '總量的名稱
  11.                 If Range(E.Name) > 0 Then
  12.                     With Cells(Rows.Count, Range(E.Name).Column).End(xlUp)  ''總量名稱所在的最底列往上到有資料的儲存格
  13.                             If .Row = 2 Or .Row > 2 And .Value <> Range(E.Name).Value Then
  14.                                 .Offset(1).Cells(1, -2).Resize(, 4) = Range(E.Name).Cells(, -2).Resize(, 4).Value
  15.                             End If
  16.                     End With
  17.                 End If
  18.             End If
  19.         Next
  20. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 36# 藍天麗池
請先把你那端整個測試的程序結果詳細地描述一下,
包含券商軟體的啟動,以及是否在開盤期間運作?
並把執行後的畫面 (一分鐘前後的執行的畫面)
Hard Copy 出來上傳,我想瞭解這之前你的舊有程式
是如何執行OK的。因為程式結構未變,變動的僅僅是
邏輯判斷不同而已,在我端無論新舊均能正常運作,
為何你那端就不行?

TOP

回復 35# c_c_lai

股票10.rar (26.63 KB)
C大附件是最終版本,此版本不用複製時間,只要往下寫B2-E2、F2-I2...以此類推,我不知道如果這樣的話以下要如何更改

Private Sub Worksheet_Change(ByVal Target As Range)
    '  當 D2 欄位有異動時, 則去呼叫 RecordPrice 的方法 (Method)。
    If Target.Address = "$D$2" Or Target.Address = "$H$2" Or Target.Address = "$L$2" Or Target.Address = "$P$2" Or _
              Target.Address = "$T$2" Or Target.Address = "$X$2" Or Target.Address = "$AB$2" Or _
              Target.Address = "$AF$2" Or Target.Address = "$AJ$2" Or Target.Address = "$AN$2" Then
        Call RecordPrice(Target.Address)
    End If
End Sub

真的要打100個嗎??

TOP

        靜思自在 : 自己害自己,莫過於亂發脾氣。
返回列表 上一主題