作者foreverkn (时间是最好的疗剂)
看板Visual_Basic
标题Re: [VBA ] 请问型态不符合的问题
时间Tue Jan 3 21:25:33 2012
※ 引述《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
1F:→ Semisphere:我猜你 For i = 8 To n + 5 超过资料范围,cdbl转null 01/04 09:03
2F:→ Semisphere:出错,check算法或改用val 01/04 09:04