以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 下列代码错哪了 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=51265) |
-- 作者:lpxjw_zyl -- 发布时间:2014/5/23 3:03:00 -- 下列代码错哪了 With DataTables("表Ⅰ") Dim tj1 As Double = Val(.datarows(14)("B6")) + Val(.datarows(14)("B7")) If RibbonTabs("全面薄改")("电子计算")("学校类别").text = "教学点" Then Output.Show(tj1) If tj1 <= 4 Then .datarows(0)("B4") = 1.9 ElseIf tj1 >= 36 Then .datarows(0)("B4") = 14 Else For i As Integer = 0 To Tables("小学校舍标准").Rows.count -1 If tj1 > Tables("小学校舍标准").Rows(i)("生均用地面积") AndAlso tj1 <= Tables("小学校舍标准").Rows(i+1)("生均用地面积") Then .datarows(0)("B4") = Tables("小学校舍标准").Rows(i+1)("生均用地面积") Exit For End If Next End If End If End With |
-- 作者:lpxjw_zyl -- 发布时间:2014/5/23 3:03:00 -- 提示超出索引
|
-- 作者:Bin -- 发布时间:2014/5/23 8:32:00 -- 多次用索引 引用行数,但是一律不判断.那当然会报错. 如果表中没行怎么办? 表中行数小于14行呢? 还有遍历里面的.datarows(0)("B4") = Tables("小学校舍标准").Rows(i+1)("生均用地面积") 如果遍历到最后一行你再+1 这不是超标了吗? 所以要先判断 if DataTables("表Ⅰ").datarows.count > 0 then 再执行其他. 获取14行时要先判断 if DataTables("表Ⅰ").datarows.count >= 0 then 最重要的在遍历里面 if Tables("小学校舍标准").Rows.count > (i-1) then .datarows(0)("B4") = Tables("小学校舍标准").Rows(i+1)("生均用地面积") |