正确代码:
For intI = 0 To grdtest.Row - 1
bkMark = grdtest.AddItemBookmark(intI)
intSum = intSum + CInt(grdtest.Columns("test").CellValue(bkMark))
Next intI
intSum = intSum + CInt(grdtest.Columns("test").Value)
For intI = (grdtest.Row + 1) To (grdtest.Rows - 1)
bkMark = grdtest.AddItemBookmark(intI)
intSum = intSum + CInt(grdtest.Columns("test").CellValue(bkMark))
Next intI
MsgBox "The Sum:" & intSum
错误代码:
For intI = 0 To (grdtest.Rows - 1)
bkMark = grdtest.AddItemBookmark(intI)
intSum = intSum + CInt(grdtest.Columns("test").CellValue(bkMark))
Next intI
MsgBox "The Sum:" & intSum
错误代码中由于在AfterColUpdate事件中通过绝对行数用AdditemBookmark方法得到bookmark,再通过 grdtest.Columns("test").CellValue(bkMark)取得的被修改行的值不是修改过的值,而是修改之前的值。
在正确的代码中,将修改行单独用grdtest.Columns("test").Value取得修改后的值,然后将其他行的值用For循环的绝对行数—>BookMark->Value的方法取得,然后求和,可以达到求修改后的和的目的。
PS:在AfterColUpdate中,对grdtest.Bookmark赋值不会起作用,对bookmark的movefirst等move操作也不会起作用。在这个事件中bookmark不会被移动。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11411056/viewspace-733999/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/11411056/viewspace-733999/