Re: [VBA ] 請問型態不符合的問題

看板Visual_Basic作者 (時間是最好的療劑)時間13年前 (2012/01/03 21:25), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《foreverkn (時間是最好的療劑)》之銘言: : : 我針對一些數據判定大小來上色 : : 第三行和第五到七行都是有著小數點後兩位的數字 : : 執行結果其中一行程式碼出現型態不符合的錯誤 : : : 程式碼如下 : : : Dim i As Integer : Dim n As Integer : Dim p As Single : Dim p1 As Single : : : n = WorksheetFunction.CountA(Columns("A:A")) : : Rows("7:300").Select : Selection.Interior.ColorIndex = xlNone : : : For i = 8 To n + 5 : p = Cells(i, 3).Value : : For j = 5 To 7 : p1 = Cells(i, j).Value <--- 這一行呈現黃色,錯誤訊息為 : 執行階段錯誤 '13':型態不符合 : : If WorksheetFunction.And(p < (p1 * 1.05), p > p1) Then : Cells(i, j).Select : With Selection.Interior : .ColorIndex = 35 : .Pattern = xlSolid : End With : ElseIf p < p1 Then : Cells(i, j).Select : With Selection.Interior : .ColorIndex = 50 : .Pattern = xlSolid : End With : End If : : Next j : : Next i : : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 1.169.180.124 : → MOONRAKER:前面dim多此一舉,拿掉便不會錯。 01/02 02:54 : 推 ClubT:宣告變數是多此一舉嗎? 改成下面這樣應該OK 01/02 09:21 : → ClubT:p1 = CDBL(Cells(i, j).Value) 01/02 09:22 : → MOONRAKER:以這個用途而言我認為不需要…當然也是因為我從不習慣 01/02 10:35 : → MOONRAKER:VB的轉型函數,不如跳過。就算到.NET也不習慣。 >(=) 01/02 10:36 我這上面的方法自己試了之後,拿掉宣告和使用CDBL都還是不行 如果不宣告,由於數據有小數點,p和p1比較大小時似乎有誤 甚至比較大小比錯之後,上色也就跟著上錯了 甚至出現了第五到六行上色正確 但第七行又停下來出現型態不符的錯誤..... 不知道我還有哪裡有問題? 還請各位不吝告知,謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.169.180.124

01/04 09:03, , 1F
我猜你 For i = 8 To n + 5 超過資料範圍,cdbl轉null
01/04 09:03, 1F

01/04 09:04, , 2F
出錯,check算法或改用val
01/04 09:04, 2F
文章代碼(AID): #1F0m7FS0 (Visual_Basic)
討論串 (同標題文章)
文章代碼(AID): #1F0m7FS0 (Visual_Basic)