以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  这句代码如何能做到不出现以下的那个提示?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=10131)

--  作者:blackzhu
--  发布时间:2011/5/22 19:03:00
--  这句代码如何能做到不出现以下的那个提示?

Select Case e.DataCol.Name
    Case "第一列"
        With Tables("表A")
            For i As Integer = 0 To Tables("表A").Count -1
                .Rows(i)("第九列")= .Rows(i,i)("第一列") *.Rows(i+1)("第一列")  \'选定行相乘
            Next
        End With
End Select

 

 

 



此主题相关图片如下:提示.jpg
按此在新窗口浏览图片

--  作者:blackzhu
--  发布时间:2011/5/22 20:32:00
--  
C版你在,帮我看看这个.
--  作者:blackzhu
--  发布时间:2011/5/22 20:48:00
--  
两位老大都在不帮我看看.
--  作者:狐狸爸爸
--  发布时间:2011/5/22 20:55:00
--  

问题出在红色的位置,难道你有1000行,就有1000列?

 

.Rows(i,i)("第一列") *.Rows(i+1)("第一列")


--  作者:blackzhu
--  发布时间:2011/5/22 21:00:00
--  

不对,这个是我测试不过来,当时加了这个看看的.

 

Select Case e.DataCol.Name
    Case "第一列"
        With Tables("表A")
            For i As Integer = 0 To Tables("表A").Count -1
                .Rows(i)("第九列")= .Rows(i)("第一列") *.Rows(i+1)("第一列")  \'选定行相乘
            Next
        End With
End Select

 

当时这个代码出现提示的.

 


--  作者:blackzhu
--  发布时间:2011/5/22 21:02:00
--  
其实问题是上下行相加到本表内的另外一列的,结果列的行数比参与计算的行少了一行.所以一直出现这个提示.
--  作者:狐狸爸爸
--  发布时间:2011/5/22 21:17:00
--  
以下是引用blackzhu在2011-5-22 21:00:00的发言:

不对,这个是我测试不过来,当时加了这个看看的.

 

Select Case e.DataCol.Name
    Case "第一列"
        With Tables("表A")
            For i As Integer = 0 To Tables("表A").Count -1
                .Rows(i)("第九列")= .Rows(i)("第一列") *.Rows(i+1)("第一列")  \'选定行相乘
            Next
        End With
End Select

 

当时这个代码出现提示的.

 

 

这也是有严重错误的,当i循环到Tables("表A").Count -1时,i+1等于Tables("表A").Count ,那么:

.Rows(i+1)("第一列")

肯定会出错,因为根本就不存在编号为Tables("表A").Count的行,行的编号最大为Tables("表A").Count -1

 

你的循环代码应该改为:

 For i As Integer = 0 To Tables("表A").Count -2


--  作者:blackzhu
--  发布时间:2011/5/22 21:19:00
--  
我再研究,可以了.
--  作者:blackzhu
--  发布时间:2011/5/22 21:26:00
--  
      我就没有试试-2,当时我想这个应该是0到-1为最后一行.就没有想到因为I+1,这个+1和+1正好抵消,那么最后一行的-1,还是没有,就应该给他个-1,所以应该再多加上一个-1,就是应该是-2..明白了,其实很简单,对这个我有加深了了解.谢谢!