以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  如何得到某行数据在包含分组行情况下的位置?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=67800)

--  作者:hdffzxf
--  发布时间:2015/5/3 13:57:00
--  如何得到某行数据在包含分组行情况下的位置?

请教老师:假如不考虑分组行的情况下,某特定行的位置(index)是3,该行即t.rows(3),但在考虑分组行的情况下,该特定行的位置是5,如何通过代码得到该特定行的位置是5?谢谢!


--  作者:大红袍
--  发布时间:2015/5/3 20:30:00
--  

 比较麻烦,直接说你想做什么吧。要做就参考下面的代码

 

Dim r As Row = Tables("表A").Rows(7)

Dim fzs As Integer = 0
With Tables("表A")
    For i As Integer = 0 To r.Index \'Count加上参数True
        r = .Rows(i,True) \'Rows也需要加上参数True
        If r.IsGroup Then \'如果是分组行
            fzs += 1
        End If
    Next
End With

msgbox(r.Index + fzs)


--  作者:hdffzxf
--  发布时间:2015/5/6 12:47:00
--  
回复2楼:首先谢谢您的帮助!但是您的代码有这样的问题:在包括分组行的情况下,该行是的实际位置可能在第10行(不包括分组行是第7行),那么  For i As Integer = 0 To r.Index 这句的r.index是第7行,也就是说遍历不到包括分组行情况下的第10行,也就得不到正确的结果呀!
--  作者:hdffzxf
--  发布时间:2015/5/6 12:48:00
--  
还有其他的解决方法吗?求高手指教,是否可能用到递归函数?
--  作者:Bin
--  发布时间:2015/5/6 13:37:00
--  
2楼的代码,可以遍历到包分组的行. 帮助知识点http://www.foxtable.com/help/topics/1594.htm
--  作者:hdffzxf
--  发布时间:2015/5/6 13:54:00
--  

回5楼,知识点已看过,好象不能解决遍历到包括分组行在内的某行。

注:该行不包括分组行时确定是第7行,但包括分组行时如何写:rows(7).index(true) ?  好象index不支持true


--  作者:Bin
--  发布时间:2015/5/6 13:56:00
--  
你想实现什么?
--  作者:hdffzxf
--  发布时间:2015/5/6 14:04:00
--  
比如:我定义了某单元格:rows(7)("第一列")=rows(2)("第一列")+rows(3)("第二列"),并且利用   t.Grid.SetCellStyle(7+表头层数,t.Cols(“第一列”).Index+1,cs)为该单元格着色,计算的结果无论包不包括分组行都是没有问题, 就是在包括分组行的情况下,着色就串了单元格
[此贴子已经被作者于2015/5/6 14:04:53编辑过]

--  作者:Bin
--  发布时间:2015/5/6 14:12:00
--  
建议你还是利用DrawCell来实现着色,这样就没这个冲突问题.
--  作者:hdffzxf
--  发布时间:2015/5/6 14:17:00
--  
嗯,知道drawcell是很好的办法,但是那样就会调整程序代码的结构了,觉得利用  t.Grid.SetCellStyle代码更便捷一些