作者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
1F:→ MOONRAKER:前面dim多此一举,拿掉便不会错。 01/02 02:54
2F:推 ClubT:宣告变数是多此一举吗? 改成下面这样应该OK 01/02 09:21
3F:→ ClubT:p1 = CDBL(Cells(i, j).Value) 01/02 09:22
4F:→ MOONRAKER:以这个用途而言我认为不需要…当然也是因为我从不习惯 01/02 10:35
5F:→ MOONRAKER:VB的转型函数,不如跳过。就算到.NET也不习惯。 >(=) 01/02 10:36
6F:→ foreverkn:我拿掉宣告和使用CDBL都还是不行,如果不宣告,由於数据 01/02 11:36
7F:→ foreverkn:有小数点,p和p1比较大小时似乎有误..... 01/02 11:36
8F:推 knstt:把integer 改为long试看看 01/03 22:05
9F:→ knstt:检查一下资料型态是不是有问题 01/03 22:10
10F:→ ClubT:检查回圈跑到所有栏位是否都是数字类型的 01/04 09:02
11F:→ ClubT:而且你难道看不出来是在哪个储存格出错吗? 应该很容易吧 01/04 09:03