看板 Visual_Basic 關於我們 聯絡資訊
※ 引述《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
Semisphere:我猜你 For i = 8 To n + 5 超過資料範圍,cdbl轉null 01/04 09:03
Semisphere:出錯,check算法或改用val 01/04 09:04