Board logo

標題: [發問] 2003與2010型態不符 [打印本頁]

作者: b9208    時間: 2013-1-1 09:50     標題: 2003與2010型態不符

各位先進
如下vba片段,2003運行可以,但2010執行發生型態不符,敬請指教。

Dim  v As Range

For Each v In .Range(.[Q6], .[Q65536].End(xlUp))
      If Len(Trim(v.Text)) < 6 Then
           .Cells(v.Row, "AN") = IIf(Left(Trim(v.Text), 2) < 6, "X", "Y")
        Else
            K = CDate([v]) - Int(CDate([v]))
           .Cells(v.Row, "AN") = IIf(K < 0.25, "X", "Y")
      End If
   Next v
作者: c_c_lai    時間: 2013-1-1 10:04

各位先進
如下vba片段,2003運行可以,但2010執行發生型態不符,敬請指教。

Dim  v As Range

For E ...
b9208 發表於 2013-1-1 09:50

此段語法在 Office 2010 上執行是 OK 的,
請你再檢查一次,或者是你把執行錯誤訊息回報!
作者: chin15    時間: 2013-1-2 08:26

應該不是這個問題
你的range前面有個''.'',就必須有"with"!
作者: Hsieh    時間: 2013-1-2 10:03

回復 1# b9208


    這應該是只有片段代碼,如果是With敘述錯誤,會出現不正確的引用錯誤,而非型態不符
以此段代碼內會出現型態不符錯誤,比較可能的是CDate函數,若函數內的引數無法轉成日期就會產生此錯誤
請上傳檔案,才能得知正確錯誤點
作者: b9208    時間: 2013-1-3 19:13

感謝各位先進指導
因資料有三萬多筆,如同Hsieh版主見解 CDate函數,
問題出在G欄中有一筆資料有日期沒時間且有〞:〞之時間表示符號,
修正後已經可以執行了。
謝謝各位先進




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