作者foreverkn (時間是最好的療劑)
看板Visual_Basic
標題[VBA ] 請問型態不符合的問題
時間Mon Jan 2 00:13:34 2012
我針對一些數據判定大小來上色
第三行和第五到七行都是有著小數點後兩位的數字
執行結果其中一行程式碼出現型態不符合的錯誤
請各位幫我看一下是哪裡有問題,謝謝!
程式碼如下 :
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
→ foreverkn:我拿掉宣告和使用CDBL都還是不行,如果不宣告,由於數據 01/02 11:36
→ foreverkn:有小數點,p和p1比較大小時似乎有誤..... 01/02 11:36
推 knstt:把integer 改為long試看看 01/03 22:05
→ knstt:檢查一下資料型態是不是有問題 01/03 22:10
→ ClubT:檢查回圈跑到所有欄位是否都是數字類型的 01/04 09:02
→ ClubT:而且你難道看不出來是在哪個儲存格出錯嗎? 應該很容易吧 01/04 09:03