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

看板Visual_Basic作者 (時間是最好的療劑)時間12年前 (2012/01/02 00:13), 編輯推噓2(209)
留言11則, 4人參與, 最新討論串1/2 (看更多)
我針對一些數據判定大小來上色 第三行和第五到七行都是有著小數點後兩位的數字 執行結果其中一行程式碼出現型態不符合的錯誤 請各位幫我看一下是哪裡有問題,謝謝! 程式碼如下 : 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

01/02 02:54, , 1F
前面dim多此一舉,拿掉便不會錯。
01/02 02:54, 1F

01/02 09:21, , 2F
宣告變數是多此一舉嗎? 改成下面這樣應該OK
01/02 09:21, 2F

01/02 09:22, , 3F
p1 = CDBL(Cells(i, j).Value)
01/02 09:22, 3F

01/02 10:35, , 4F
以這個用途而言我認為不需要…當然也是因為我從不習慣
01/02 10:35, 4F

01/02 10:36, , 5F
VB的轉型函數,不如跳過。就算到.NET也不習慣。 >(=)
01/02 10:36, 5F

01/02 11:36, , 6F
我拿掉宣告和使用CDBL都還是不行,如果不宣告,由於數據
01/02 11:36, 6F

01/02 11:36, , 7F
有小數點,p和p1比較大小時似乎有誤.....
01/02 11:36, 7F

01/03 22:05, , 8F
把integer 改為long試看看
01/03 22:05, 8F

01/03 22:10, , 9F
檢查一下資料型態是不是有問題
01/03 22:10, 9F

01/04 09:02, , 10F
檢查回圈跑到所有欄位是否都是數字類型的
01/04 09:02, 10F

01/04 09:03, , 11F
而且你難道看不出來是在哪個儲存格出錯嗎? 應該很容易吧
01/04 09:03, 11F
文章代碼(AID): #1F08Onc9 (Visual_Basic)
文章代碼(AID): #1F08Onc9 (Visual_Basic)