Board logo

標題: 請教出現「執行階段錯誤13:型態不符合」! [打印本頁]

作者: barrykuo    時間: 2014-7-4 10:33     標題: 請教出現「執行階段錯誤13:型態不符合」!

本帖最後由 barrykuo 於 2014-7-4 10:35 編輯

想利用DDE觸發來執行特定整點時間前後五秒的每筆記錄
如紅色所敘述。
Private Sub Worksheet_Calculate()
On Error Resume Next
        C = Sheets("即時指數").Cells(3, 7)
        If o = 0 Then o = C執行
        If C > h Then h = C
        If C < l Then l = C
Application.Run "期貨計算A02.xls!printing_value"
Application.Run "期貨計算A02.xls!sixtyK"
End Sub
=======================================
Sub printing_value()
Dim printime, rtest, stest As Integer

printime = Sheets("即時指數").Range("C3")
rtest = Sheets("波段").[r65536].End(xlUp).Row
stest = Sheets("波段").[S65536].End(xlUp).Row
If printime >= 94455 Then'出現錯誤訊息,按下偵錯,這裡出現反白,請問哪裡有錯誤?
rtest = Sheets("即時指數").Range("c3") '成交價時間位置測試
stest = Sheets("即時指數").Range("g3") '成交價時間位置測試
    If Sheets("即時指數").Range("C3") >= 94505 Then Exit Sub
End If
If printime >= 104455 Then
rtest = Sheets("即時指數").Range("c3") '成交價時間位置測試
stest = Sheets("即時指數").Range("g3") '成交價時間位置測試
    If Sheets("即時指數").Range("C3") >= 104505 Then Exit Sub
End If
If printime >= 114455 Then
rtest = Sheets("即時指數").Range("c3") '成交價時間位置測試
stest = Sheets("即時指數").Range("g3") '成交價時間位置測試
    If Sheets("即時指數").Range("C3") >= 114505 Then Exit Sub
End If
If printime >= 124455 Then
rtest = Sheets("即時指數").Range("c3") '成交價時間位置測試
stest = Sheets("即時指數").Range("g3") '成交價時間位置測試
    If Sheets("即時指數").Range("C3") >= 124505 Then Exit Sub
End If
End Sub

謝謝各位大大耐心看,謝謝指導!
作者: barrykuo    時間: 2014-7-5 13:32

不好意思,原來在需要執行的程序前加上[On Error Resume Next],就不會出現錯誤訊息
Sub printing_value()
On Error Resume Next
只是不知道錯誤是什麼?
作者: c_c_lai    時間: 2014-7-5 15:15

回復 2# barrykuo
請檢查 printime, rtest, stest 三個變數值的儲存型態確實為何?
作者: barrykuo    時間: 2014-7-5 15:43

回復 3# c_c_lai
回c_c_lai大大,抱歉忘記貼上昨天改正的地方,如下:
Sub printing_value()
Dim printime, rtest, stest
printime = Sheets("即時指數").Range("C3")
rtest = Sheets("波段").[r65536].End(xlUp).Row
stest = Sheets("波段").[S65536].End(xlUp).Row
On Error Resume Next
If printime > 94455 Then
Sheets("波段").Cells(rtest, 18) = Sheets("即時指數").Range("c3") '成交價時間位置測試
Sheets("波段").Cells(stest, 19) = Sheets("即時指數").Range("g3") '成交價時間位置測試
    If printime > 94505 Then Exit Sub
End If
If printime > 104455 Then
Sheets("波段").Cells(rtest, 18) = Sheets("即時指數").Range("c3") '成交價時間位置測試
Sheets("波段").Cells(stest, 19) = Sheets("即時指數").Range("g3") '成交價時間位置測試
    If printime > 104505 Then Exit Sub
End If
If printime > 114455 Then
Sheets("波段").Cells(rtest, 18) = Sheets("即時指數").Range("c3") '成交價時間位置測試
Sheets("波段").Cells(stest, 19) = Sheets("即時指數").Range("g3") '成交價時間位置測試
    If printime > 114505 Then Exit Sub
End If
If printime > 124455 Then
Sheets("波段").Cells(rtest, 18) = Sheets("即時指數").Range("c3") '成交價時間位置測試
Sheets("波段").Cells(stest, 19) = Sheets("即時指數").Range("g3") '成交價時間位置測試
    If printime > 124505 Then Exit Sub
End If
End Sub
================================================================
周一再來測試看。謝謝您耐心看完!
作者: GBKEE    時間: 2014-7-5 15:51

回復 2# barrykuo
試試看
  1. Option Explicit
  2. Sub Ex()
  3.     Dim printime
  4.     Sheets(1).Range("C3") = "=aa"  '如果 沒有這公式->錯誤值
  5.     printime = Sheets(1).Range("C3")
  6.     If printime >= 94455 Then '出現錯誤訊息,按下偵錯,這裡出現反白,請問哪裡有錯誤?
  7.    
  8.     End If

  9. End Sub
複製代碼

作者: c_c_lai    時間: 2014-7-5 17:38

回復 4# barrykuo
我想問題可能出在:
  1. printime = Sheets("即時指數").Range("C3")
複製代碼
你先看看 "C3" 的內容為何?
譬如: 其值如為 #VALUE! 或是 #NUM! 等,
              如拿來做運算或比較亦會出錯。
作者: barrykuo    時間: 2014-7-5 17:48

回復 5# GBKEE
GBKEE大大您好,
如果把您給的程序在宣告加上As Double,"aa"改成94456或是94454,再執行程序,就沒有再出現錯誤訊息。
Sub Ex()
    Dim printime As Double
    Sheets(1).Range("C3") = "94400"  '如果 沒有這公式->錯誤值
    printime = Sheets(1).Range("C3")
    If printime >= 94455 Then '出現錯誤訊息,按下偵錯,這裡出現反白,請問哪裡有錯誤?
    End If
End Sub
所以正確宣告很重要,請問儲存格C3是日期格式2014/07/07,這樣假如是寫:
a=Sheets(1).Range("C3")
請問a要宣告為什麼?也是Double嘛?
作者: GBKEE    時間: 2014-7-6 13:59

如果把您給的程序在宣告加上As Double,"aa"改成94456或是94454,再執行程序,就沒有再出現錯誤訊息。

問題是  c_c_lai  已回覆你:
  你先看看 "C3" 的內容為何?
譬如: 其值如為 #VALUE! 或是 #NUM! 等,
              如拿來做運算或比較亦會出錯。

作者: barrykuo    時間: 2014-7-7 11:33

回復 8# GBKEE
是的!要再了解這方面定義,謝謝GBKEE及c_c_lai大大指導。
作者: barrykuo    時間: 2014-7-7 11:42

唉!超過三分鐘不能再編輯
#NUM!
發生原因:公式中使用不正確的參數,或是公式結果的值太大或太小。
處理方式:逐步檢查並修正公式中的錯誤。
#VALUE!
發生原因:1.公式中本該數字與數字運算卻將數字與文字作運算,便會造成數值錯誤。如A1=123、A2=ABC、A3=A1+A2。
     2.公式本該引用單一數值,卻不小心引用了一個區域。
處理方式:1.修改公式中的文字格式,重新輸入為數字即可。
     2.改變公式為引用區域函數,或是改變引用的區域為單一數值。

我應該先來了解這些定義!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)